El error es que al digitar el numero "26" y guardarlo, al cargarlo no carga nada y si guardas algo mas adelante de eso no se muestra ni se guarda correctamente...
quiero saber si se puede reparar o necesitare otro compilador
#include <stdio.h>
struct data{
int a;
int b;
};
void proceso(){
FILE *file;
data dat;
file = fopen("Prueba.txt", "r");
if(file == NULL)
printf("ERROR EN EL ARCHIVO\n\n");
fread(&dat,sizeof(dat),1,file);
while(!feof(file)){
printf("Resultado a: %d \nResultado b: %d\n\n", dat.a, dat.b);
fread(&dat,sizeof(dat),1,file);
}
fclose(file);
}
int main(){
FILE *file;
data dat;
file = fopen("Prueba.txt", "a");
if(file == NULL)
printf("ERROR EN EL ARCHIVO\n\n");
printf("NUMERO a: ");
scanf("%d", &dat.a);
printf("NUMERO b: ");
scanf("%d",&dat.b);
fwrite(&dat, sizeof(dat),1,file);
fclose(file);
printf("\n==============================================\n==============================================\n\n");
proceso();
return 0;
}
Cambia algo si escribes y lees usando binary, osea
fopen(..., "wb") para escribir y "rb" para leer?
Mira esto: https://books.google.es/books?id=CQmQarItGiUC&pg=PA286&lpg=PA286&dq=binary+1A+marks+end+of+file&source=bl&ots=V3piB9rJQi&sig=ACfU3U2cUyO6PBcEyynMbpX2xUZIIXi0Sg&hl=es&sa=X&ved=2ahUKEwjKv767rqXiAhWDxYUKHVy_BpkQ6AEwAXoECAkQAQ#v=onepage&q=binary%201A%20marks%20end%20of%20file&f=false
Esto quiere decir que estás trabajando los archivos en modo texto y cuando C encuentra el valor 1A (26 en decimal) lo considera fin de archivo. Cambia el acceso a los archivos para que sean accesos binarios incluyendo b al final: en vez de "a" debe ser "ab", en vez de "r" debe ser "rb".
¡Muchas gracias!, si me sirvio.