Leer datos de un cierto formato desde un fichero

Ver el tema anterior Ver el tema siguiente Ir abajo

Leer datos de un cierto formato desde un fichero

Mensaje por javiepe el Miér Mar 12, 2014 10:22 am

Buenas,

estoy bastante acostumbrado a programar en Fortran, pero ahora tengo un proyecto en el cual debo programar en C, y aunque tengo en mente cómo hacer el programa, me falla el proceso de lecturas de datos desde un fichero.

Tengo un fichero en el cual hay dos tipos de datos. El primer tipo tiene el siguiente formato:

AAAA-MM-DD E F

(AAAA es año, MM es mes, DD es día, E es un número entero, y F uno decimal)

El segundo tipo es muy parecido:

AAAA-MM-DD F


A mí me interesa leer los números E y F del primer grupo de datos, guardándolos en dos vectores, y leer el número F del segundo grupo de datos, guardándolo en otro vector. Aquí es donde surge mi problema.

Estoy intentando hacer esto utilizando la función fscanf, escribiendo estos dos comando después de delcarar variables y abrir los ficheros:

fscanf (f1, "%d-%d-%d %d %f\n", &ano, &mes, &dia , E1, F1);
fscanf (f1, "%d-%d-%d %f\n", &ano, &mes, &dia, F2);

He declarado E1(3000), F1(3000) y F2(3000) asegurándome de que son suficientemente grandes para almacenar todos los números que hay en el fichero.

Haciendo esto, no consigo que se almacenen los números, ni siquiera el año. No sé si la función fscanf se utiliza así o no.

Agradecería cualquier ayuda, ya que tengo el algoritmo básico en mente, pero no puedo aplicarlo por culpa de que no sé cómo leer el fichero.

Muchas gracias.

javiepe
Cimarron
Cimarron

Mensajes : 1
Fecha de inscripción : 12/03/2014

Volver arriba Ir abajo

Re: Leer datos de un cierto formato desde un fichero

Mensaje por Darina el Lun Mar 17, 2014 1:17 pm

Buenas,
Tu problema surge cuando lees el vector. Resulta que siempre lees sólo el primer elemento: E1[0]. En el ciclo donde lees para guardar en vectores debes introducir el cambio del índice.
Estoy acostumbrada a los punteros y haría así:
int i=0;
---
fscanf (f1, "%d-%d-%d %d %f\n", &ano, &mes, &dia , (E1+i), (F1+i));
fscanf (f1, "%d-%d-%d %f\n", &ano, &mes, &dia, (F2+i));
i++;

Con los índices debe ser algo parecido, aunque con esta variante no estoy segura:
fscanf (f1, "%d-%d-%d %d %f\n", &ano, &mes, &dia , &E1[i], &F1[i]);
fscanf (f1, "%d-%d-%d %f\n", &ano, &mes, &dia, &F2[i]);
i++;

P.S.: Perdóname por los errores gramaticales, por si los hay, porque no soy española)

Darina
Cimarron
Cimarron

Mensajes : 2
Fecha de inscripción : 17/03/2014

Volver arriba Ir abajo

Ver el tema anterior Ver el tema siguiente Volver arriba

- Temas similares

 
Permisos de este foro:
No puedes responder a temas en este foro.