Ver Mensaje Individual
  #2 (permalink)  
Antiguo 13/03/2014, 14:49
vosk
 
Fecha de Ingreso: agosto-2012
Mensajes: 601
Antigüedad: 12 años, 3 meses
Puntos: 83
Respuesta: Leer datos de un cierto formato desde un fichero

"...Haciendo esto, no consigo que se almacenen los números, ni siquiera el año...."

El año si que lo guarda (y el mes y el dia), pero cuando intenta guardar el E1 se produce una violacion de segmento y ya nunca llega a intentar guardar F1:

Código C:
Ver original
  1. int E1[3000];
  2. float F1[3000];
  3. fscanf(f1, "%d-%d-%d %d %f\n", &ano, &mes, &dia , E1, F1);

fscanf espera un puntero a la posicion de memoria donde quieres leer el dato; observa la diferencia de tu codigo con la siguiente linea:

Código C:
Ver original
  1. fscanf(f1, "%d-%d-%d %d %f\n", &ano, &mes, &dia , &E1[0], &F1[0]);

De esta forma para el primer fscanf usas E[0], para el segundo E[1], para el tercero E[2], etc... ya ves como funciona; y para los F igual.

Otra cosa, como tienes el archivo, siempre hay una linea de E1,F1 seguido de una F2? O pueden estar intercaladas de forma aleatoria?

Aun otra cosa, estas reservando memoria para 3000 enteros y 6000 flotantes; es necesario? Has trabajado con memoria dinamica? De esta forma puedes ampliar las listas cuanto sea necesario sin limitar ni exagerar. Has trabajado tambien con estructuras? Con eso y la memoria dinamica puedes implementar listas de estructuras con todos los datos de cada lectura.

Resuelve primero lo de la violacion de segmento.

Saludos
vosk