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): "); printf("Pulse 1 si desea crear los archivos, 2 si desea proceder al menu: "); if(opcion1==1)
{
fopen(nombreArchivo
,"wb"); menu (nombreArchivo,control);
}
else
{
menu(nombreArchivo,control);
}
return 0;
}
void menu(char* nombreArchivo, char* control)
{
int opcion;
do{
printf("1. Agregar Persona\n"); printf("2. Consultar Lista\n"); printf("Ingresar una opcion: ");
if (opcion>0 && opcion<5)
{
switch(opcion){
case 1:
guardarPersona(crearPersona(), nombreArchivo);
break;
case 2:
mostrarLista(nombreArchivo);
break;
case 3:
break;
}
}
else
{
printf("\nOpcion no contemplada\n"); pausar();
}
}while (opcion!=5);
}
Persona crearPersona()
{
Persona persona;
scanf(" %d", &persona.
DNI); scanf(" %d", &persona.
fnac); scanf(" %s", persona.
apellido); 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();
}
}
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); }
pausar();
}
}
void pausar()
{
printf("Presione ENTER para continuar");
}