<div style="text-align: left;">Buenas! Estoy intentando hacer un programa para ver el funcionamiento del tratamiento de ficheros. La aplicación en cuestión pide 3 usuarios con sus respesctivos años, y después lee el fichero y comprueba si uno de los usuarios se llama "Javi", si es asi cambia su edad a 99 y lo actualiza. Y luego recorre el fichero y si existe el usuario "Javi" muestra su edad actualizada (99).<br>
<br>El problema es que no actualiza la edad correctamente, y al mostrar la supuesta edad actualizada, muestra la que introduje por teclado.<br><br><br>Muchas gracias! Aqui el codigo:<br><br><br><br> typedef struct {<br> int edad;<br>
char nombre[20];<br> } t_ficha;<br> <br>int main(){<br> <br> t_ficha persona;<br> FILE *prueba;<br> int i, encontrado=0;<br> <br> if((prueba=fopen("prueba.dat", "wt"))==NULL)<br>
printf("\nError al abrir el archivo");<br> <br> /** Introducir los datos en el archivo. */<br> for(i=0; i<3; i++){<br> printf("\nDame el nombre: ");<br> gets(persona.nombre);<br>
fflush(stdin);<br> printf("\nDame la edad: ");<br> scanf("%d", &persona.edad);<br> fflush(stdin);<br> fwrite(&persona, sizeof(persona), 1, prueba); <br>
}<br> fclose(prueba);<br><br> /* Actualizacion de los datos */<br> if((prueba=fopen("prueba.dat", "rt+"))==NULL)<br> printf("\nError al abrir el archivo"); <br>
<br> <br> while(!encontrado && fread(&persona, sizeof(persona), 1, prueba)){<br> if(strcmp(persona.nombre, "Javi")==0){<br> persona.edad=99;<br> encontrado=1;<br>
fwrite(&persona, sizeof(persona), 1, prueba); <br> }<br> }<br> fclose(prueba);<br> <br> encontrado=0;<br> <br> /* Lectura de los nuevos datos */<br>
<br> if((prueba=fopen("prueba.dat", "rt"))==NULL)<br> printf("\nError al abrir el archivo"); <br> <br> while(!encontrado && fread(&persona, sizeof(persona), 1, prueba)){<br>
if(strcmp(persona.nombre, "Javi")==0){<br> encontrado=1;<br> printf("\nLa nueva edad es: %d", persona.edad);<br> }<br> }<br> <br> fclose(prueba);<br>
<br> return 0;<br>}<br></div>