Esta es la agenda que hice, queria saber si me podian ayudar con una funcion que permita actualizar los datos(ej:nombre, apellido, etc) desde ya muchas gracias.
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef struct
{
unsigned long int DNI;
unsigned long int fnac;
char apellido[64];
char nombres[64];
}Persona;
void crearArchivo(char a[],char b[]);
void menu (char* nombreArchivo, char* control);
Persona crearPersona();
void guardarPersona(Persona persona, char* nombreArchivo);
void mostrarLista(char* nombreArchivo);
void pausar();
int main()
{
char nombreArchivo[20], control[20];
int opcion1;
printf("Ingrese el nombre del archivo(Incluya su formato): ");
scanf("%s",&nombreArchivo);
printf("Ingrese el nombre del archivo de control(Incluya su formato): ");
scanf("%s",&control);
printf("Pulse 1 si desea crear los archivos, 2 si desea proceder al menu: ");
scanf("%d",&opcion1);
if(opcion1==1)
{
fopen(nombreArchivo,"wb");
fopen(control,"wb");
fclose;
menu (nombreArchivo,control);
}
else
{
menu(nombreArchivo,control);
}
return 0;
}
void menu(char* nombreArchivo, char* control)
{
int opcion;
do{
system("cls");
printf("1. Agregar Persona\n");
printf("2. Consultar Lista\n");
printf("3. Salir\n\n");
printf("Ingresar una opcion: ");
scanf(" %d", &opcion);
if (opcion>0 && opcion<5)
{
system("cls");
switch(opcion){
case 1:
guardarPersona(crearPersona(), nombreArchivo);
break;
case 2:
mostrarLista(nombreArchivo);
break;
case 3:
printf("Fin del programa\n");
break;
}
}
else
{
printf("\nOpcion no contemplada\n");
pausar();
}
}while (opcion!=5);
}
Persona crearPersona()
{
Persona persona;
printf("DNI: ");
scanf(" %d", &persona.DNI);
printf("fnac: ");
scanf(" %d", &persona.fnac);
printf("Apellido: ");
scanf(" %s", persona.apellido);
printf("Nombres: ");
scanf(" %s", persona.nombres);
return persona;
}
void guardarPersona(Persona persona, char* nombreArchivo)
{
FILE* file= fopen(nombreArchivo, "ab");
if (file==NULL)
{
printf("Error al intentar acceder al archivo\n");
pausar();
}
else
{
fwrite(&persona, sizeof(Persona), 1, file);
printf("\nPersona guardada!\n");
pausar();
fclose(file);
}
}
void mostrarLista(char* nombreArchivo)
{
FILE* file= fopen(nombreArchivo, "rb");
if (file==NULL)
{
printf("Error al intentar acceder al archivo\n");
pausar();
}
else
{
Persona persona;
printf("%-10s %-15s %-10s %s\n\n", "DNI", "FechaDeNac", "Apellido", "Nombres");
while (fread(&persona, sizeof(Persona), 1, file))
{
printf("%-10d %-15d %-10s %s\n", persona.DNI, persona.fnac, persona.apellido, persona.nombres);
}
fclose(file);
printf("\n\n");
pausar();
}
}
void pausar()
{
printf("Presione ENTER para continuar");
while (getchar() != '\n');
getchar();
printf("");
}