descubri un problema con una duncion del dev-c++ con la lib. stdio.h

Iniciado por lordluisiv, 18 Mayo 2019, 03:46 AM

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

lordluisiv

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;
}


CalgaryCorpus

Cambia algo si escribes y lees usando binary, osea
fopen(..., "wb") para escribir y "rb" para leer?
Aqui mi perfil en LinkedIn, invitame un cafe aqui

MAFUS

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".