elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Guía rápida para descarga de herramientas gratuitas de seguridad y desinfección


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  agenda archivos binarios
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: agenda archivos binarios  (Leído 2,646 veces)
kuni2006

Desconectado Desconectado

Mensajes: 17


Ver Perfil
agenda archivos binarios
« en: 2 Agosto 2016, 23:38 pm »

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
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4.  
  5. typedef struct
  6. {
  7.    unsigned long int DNI;
  8.    unsigned long int fnac;
  9.    char apellido[64];
  10.    char nombres[64];
  11. }Persona;
  12.  
  13. void crearArchivo(char a[],char b[]);
  14. void menu (char* nombreArchivo, char* control);
  15. Persona crearPersona();
  16. void guardarPersona(Persona persona, char* nombreArchivo);
  17. void mostrarLista(char* nombreArchivo);
  18. void pausar();
  19.  
  20. int main()
  21. {
  22.    char nombreArchivo[20], control[20];
  23.    int opcion1;
  24.    printf("Ingrese el nombre del archivo(Incluya su formato): ");
  25.    scanf("%s",&nombreArchivo);
  26.    printf("Ingrese el nombre del archivo de control(Incluya su formato): ");
  27.    scanf("%s",&control);
  28.    printf("Pulse 1 si desea crear los archivos, 2 si desea proceder al menu: ");
  29.    scanf("%d",&opcion1);
  30.    if(opcion1==1)
  31.    {
  32.        fopen(nombreArchivo,"wb");
  33.        fopen(control,"wb");
  34.        fclose;
  35.        menu (nombreArchivo,control);
  36.    }
  37.    else
  38.    {
  39.        menu(nombreArchivo,control);
  40.    }
  41.    return 0;
  42. }
  43.  
  44. void menu(char* nombreArchivo, char* control)
  45. {
  46.    int opcion;
  47.  
  48.    do{
  49.        system("cls");
  50.        printf("1. Agregar Persona\n");
  51.        printf("2. Consultar Lista\n");
  52.        printf("3. Salir\n\n");
  53.        printf("Ingresar una opcion: ");
  54.        scanf(" %d", &opcion);
  55.  
  56.        if (opcion>0 && opcion<5)
  57.            {
  58.            system("cls");
  59.            switch(opcion){
  60.                case 1:
  61.                    guardarPersona(crearPersona(), nombreArchivo);
  62.                    break;
  63.                case 2:
  64.                    mostrarLista(nombreArchivo);
  65.                    break;
  66.                case 3:
  67.                    printf("Fin del programa\n");
  68.                    break;
  69.  
  70.            }
  71.        }
  72.        else
  73.        {
  74.            printf("\nOpcion no contemplada\n");
  75.            pausar();
  76.        }
  77.    }while (opcion!=5);
  78. }
  79.  
  80. Persona crearPersona()
  81. {
  82.    Persona persona;
  83.  
  84.    printf("DNI: ");
  85.    scanf(" %d", &persona.DNI);
  86.    printf("fnac: ");
  87.    scanf(" %d", &persona.fnac);
  88.    printf("Apellido: ");
  89.    scanf(" %s", persona.apellido);
  90.    printf("Nombres: ");
  91.    scanf(" %s", persona.nombres);
  92.  
  93.    return persona;
  94. }
  95.  
  96. void guardarPersona(Persona persona, char* nombreArchivo)
  97. {
  98.    FILE* file= fopen(nombreArchivo, "ab");
  99.  
  100.    if (file==NULL)
  101.        {
  102.        printf("Error al intentar acceder al archivo\n");
  103.        pausar();
  104.        }
  105.    else
  106.    {
  107.        fwrite(&persona, sizeof(Persona), 1, file);
  108.        printf("\nPersona guardada!\n");
  109.        pausar();
  110.        fclose(file);
  111.    }
  112. }
  113.  
  114. void mostrarLista(char* nombreArchivo)
  115. {
  116.    FILE* file= fopen(nombreArchivo, "rb");
  117.  
  118.    if (file==NULL)
  119.        {
  120.        printf("Error al intentar acceder al archivo\n");
  121.        pausar();
  122.    }
  123.    else
  124.    {
  125.        Persona persona;
  126.        printf("%-10s %-15s %-10s %s\n\n", "DNI", "FechaDeNac", "Apellido", "Nombres");
  127.        while (fread(&persona, sizeof(Persona), 1, file))
  128.        {
  129.            printf("%-10d %-15d %-10s %s\n", persona.DNI, persona.fnac, persona.apellido, persona.nombres);
  130.        }
  131.        fclose(file);
  132.        printf("\n\n");
  133.        pausar();
  134.    }
  135. }
  136.  
  137. void pausar()
  138. {
  139.    printf("Presione ENTER para continuar");
  140.  
  141.    while (getchar() != '\n');
  142.    getchar();
  143.  
  144.    printf("");


En línea

AlbertoBSD
Programador y
Moderador Global
***
Desconectado Desconectado

Mensajes: 3.697


🏴 Libertad!!!!!


Ver Perfil WWW
Re: agenda archivos binarios
« Respuesta #1 en: 3 Agosto 2016, 07:44 am »

Tienes que plantear como quieres hacerlo.

Opciones:

  • Reescribir todos los registros del archivo
  • Reescribir solo el registro a modificar

Saludos


En línea

kuni2006

Desconectado Desconectado

Mensajes: 17


Ver Perfil
Re: agenda archivos binarios
« Respuesta #2 en: 3 Agosto 2016, 17:03 pm »

ya lo resolvi pero gracias de todas formas.
En línea

jorgediazbass

Desconectado Desconectado

Mensajes: 8


Ver Perfil
Re: agenda archivos binarios
« Respuesta #3 en: 3 Agosto 2016, 18:46 pm »

Código
  1. unsigned long int DNI;
  2.    unsigned long int fnac;
  3.    char apellido[64];
  4.    char nombres[64];

para que hacer un long con el DNI ya de por si solo con int es un numero grande, al igual que en apellido y nombres, a lo sumo no pasan de 20 a 25 caracreres por lo cual 64 es mucho con demasiado y es mas memoria que ocupada tu programa en ejecucion
En línea

AlbertoBSD
Programador y
Moderador Global
***
Desconectado Desconectado

Mensajes: 3.697


🏴 Libertad!!!!!


Ver Perfil WWW
Re: agenda archivos binarios
« Respuesta #4 en: 4 Agosto 2016, 01:14 am »

Tal vez es una base de datos Mundial y un Numero Entero no alcanza para los mas de 7 Mil millones de Personas que vivimos en la tierra.

Saludos
En línea

kuni2006

Desconectado Desconectado

Mensajes: 17


Ver Perfil
Re: agenda archivos binarios
« Respuesta #5 en: 5 Agosto 2016, 17:19 pm »

Honestamente fue porque la consigna así lo pedia.
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Archivos Binarios
Programación Visual Basic
David Vans 5 2,129 Último mensaje 14 Octubre 2006, 19:32 pm
por Nymphetaminito
Archivos Binarios
.NET (C#, VB.NET, ASP)
David Vans 2 3,329 Último mensaje 1 Junio 2007, 13:45 pm
por »~^~«CkNU!»~^~«
Archivos binarios en VB6???
Programación Visual Basic
Bb-7 1 3,813 Último mensaje 10 Abril 2008, 17:26 pm
por krackwar
Archivos Binarios
Programación Visual Basic
TheGhost(Z) 0 1,610 Último mensaje 21 Agosto 2010, 16:24 pm
por TheGhost(Z)
agenda y archivos
Programación C/C++
m@o_614 5 2,832 Último mensaje 30 Octubre 2013, 16:00 pm
por rir3760
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines