Agenda - ayuda con actualizacion

Iniciado por kuni2006, 2 Agosto 2016, 21:22 PM

0 Miembros y 1 Visitante están viendo este tema.

kuni2006

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("");
}