Bueno expongo mis problemas, anteriormente tuve que hacer este ejercicio: Una agenda que maneje los siguientes datos: nombre, dirección, tlf móvil, email, y día, mes y año de nacimiento (estos tres últimos datos deberán ser números enteros cortos). Deberá tener capacidad para 100 fichas. Se deberá poder añadir un dato nuevo, visualizar los nombres de las fichas existentes, o mostrar todos los datos de una persona (se preguntará al usuario cual es el nombre de esa persona que quiere visualizar). Al empezar el programa, leerá los datos de un fichero llamado "agenda.dat" (si existe). Al terminar, guardará todos los datos en ese fichero.
Pues bien, en un ejercicio actual me piden que modifique este anterior sustituyendo e introduciendo un fread y fwrite para leer y escribir todos los datos en el fichero, pero por mas vueltas que le he estado dando no soy capaz de hacer que funcione correctamente, por aqui os dejo las partes del código donde hay que sustituir e introducir un fread y fwrite:
fread
Código:
fwriteAgenda=fopen("agenda.dat","rt"); while(!feof(Agenda)){ fgets(Buffer,200,Agenda); if(feof(Agenda)) break; if(strlen(Buffer)>0) Buffer[strlen(Buffer)-1]='\0'; strcpy(Datos[X].Name,Buffer); fgets(Buffer,200,Agenda); if(feof(Agenda)) break; if(strlen(Buffer)>0) Buffer[strlen(Buffer)-1]='\0'; strcpy(Datos[X].Adress,Buffer); fgets(Buffer,200,Agenda); if(feof(Agenda)) break; if(strlen(Buffer)>0) Buffer[strlen(Buffer)-1]='\0'; strcpy(Datos[X].Movil,Buffer); fgets(Buffer,200,Agenda); if(feof(Agenda)) break; if(strlen(Buffer)>0) Buffer[strlen(Buffer)-1]='\0'; strcpy(Datos[X].Email,Buffer); fgets(Buffer,200,Agenda); if(feof(Agenda)) break; sscanf(Buffer,"%d",&Datos[X].Day); fgets(Buffer,200,Agenda); if(feof(Agenda)) break; sscanf(Buffer,"%d",&Datos[X].Month); fgets(Buffer,200,Agenda); if(feof(Agenda)) break; sscanf(Buffer,"%d",&Datos[X].Year); Algodon=1; X++; } fclose(Agenda);
Código:
Muchas gracias y un saludo Agenda=fopen("agenda.dat","wt"); for(Y=0;Y<X;Y++){ fprintf(Agenda,"%s\n",Datos[Y].Name); fprintf(Agenda,"%s\n",Datos[Y].Adress); fprintf(Agenda,"%s\n",Datos[Y].Movil); fprintf(Agenda,"%s\n",Datos[Y].Email); fprintf(Agenda,"%d\n",Datos[Y].Day); fprintf(Agenda,"%d\n",Datos[Y].Month); fprintf(Agenda,"%d\n",Datos[Y].Year); } fclose(Agenda);