Esta es la agenda que hice pero me hace falta una función que me permita actualizar los registros. Tengo algunas ideas de como hacerlo pero ninguna dio resultado, quería saber si alguno de ustedes me podía ayudar, gracias y saludos.
Código (c) [Seleccionar]
#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("");