Problema para pasar una lista a fichero con Fwrite

Iniciado por samur88, 18 Febrero 2011, 02:30 AM

0 Miembros y 1 Visitante están viendo este tema.

samur88

Fbin he estado haciendo pruebas con el codigo que me pusiste, pero he notado algunos fallos, supuestamente el fichero es independiente de la estructura, pero el caso es que si borro la estructura y luego leo el fichero me da lo que supuestamente tendría que ser dni, etc.. posiciones de memoría extrañas, no debería a ver problema si borrara la lista y luego leyese la estructura ¿no?, también he probado leyendo el archivo desde un programa externo y me da el mismo error, me lee y me da muchos números, adjunto el programa desde el cual he leido el fichero:


#include <stdio.h>
#include <stdlib.h>

typedef struct _nodo {
  int dni;
  int fecha;
  struct _nodo *siguiente;
} tipoNodo;

void leer_fic(){
     FILE *fp;
     tipoNodo *aux;
     int a = 0;

     fp = fopen("pacientes.txt","r+b");

     while(!feof(fp)){
      a = fread(&aux,sizeof(tipoNodo),1,fp);
      if(a != 0){
           puts("LECTURA!");
           printf("DNI:%d\n",aux->dni);
           printf("FECHA:%d\n",aux->fecha);
           printf("%d\n",a);
           puts("FIN DE LECTURA\n");
      }
     }
     fclose (fp);
}

int main(){
leer_fic();
getchar();
return 0;   
}


Un saludo.

.:BlackCoder:.

Creo que debes asignarle memoria a aux en tu funcion...

Saludos...
"No te esfuerzes por saber mas, esfuerzate por ser el mejor en lo que sabes... Y asi sabras mas" .:BlackCoder:. jajaja




samur88

Muchas gracias, al final me di cuenta de que la función fwrite y fread no reciben un puntero a una estructura si no una estructura en si, de esta forma los datos se almacenan en dicha estructura, ese era mi problema, usando un estructura auxiliar para leer los datos con fread lo he conseguido sin problemas.
Un saludo.