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