Opciones Añadir Datos, Listar todos los datos, Modificar un dato
Enlace a codepad
http://codepad.org/vUG8T0Qt
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Código Fuente
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
#include <stdio.h> #include <stdlib.h> struct Tficha { char usuario[30]; int edad; }; int main() { int continuar = 1, menu = 0; while (continuar) { printf("\n\n1 - Anadir ficha.\n"); printf("2 - Listar fichas.\n"); printf("3 - Modificar ficha.\n"); printf("0 - Salir.\n"); printf("Elije una opcion: "); scanf("%d", &menu); fflush(stdin); printf("\n"); switch (menu) { case 0: continuar = 0; break; case 1: anadir (); break; case 2: listar (); break; case 3: modificar (); break; } } return 0; } void anadir () { struct Tficha ficha; FILE *fichero; char usuario [50]; //Abrese o ficheiro como a para engadir datos o final do ficheiro fichero = fopen ("datos_bin.vaf", "ab"); //solicitase usuario por teclado printf("Introduza o nome de usuario: "); gets (ficha.usuario); fflush(stdin); //solicitase idade por teclado printf("Introduza edad de usuario: "); scanf ("%d", &ficha.edad); fflush(stdin); fwrite (&ficha, sizeof(ficha), 1 , fichero); fclose (fichero); } void modificar () { struct Tficha ficha; FILE *fichero; char usuario_teclado [50]; int edad_teclado, encontrado=0; //Abrese o ficheiro como rt+ que e a única maneira de modificar o ficheiro fichero = fopen ("datos_bin.vaf", "rb+"); //Se solicita el usuario por teclado printf("Introduza o nome de usuario: "); //usuario_teclado = getchar (); gets (usuario_teclado); fflush(stdin); //Se solicita el usuario por teclado printf("Introduza a idade do usuario: "); //usuario_teclado = getchar (); scanf ("%d", &edad_teclado); fflush(stdin); while (!feof(fichero) && encontrado == 0) { fread (&ficha, sizeof(ficha), 1 , fichero); if (strcmp(ficha.usuario, usuario_teclado)==0) encontrado = 1; } if (encontrado == 1) { fseek (fichero, -1 * sizeof(ficha), SEEK_CUR); //strcpy (ficha.usuario, usuario_teclado); ficha.edad = edad_teclado; fwrite (&ficha, sizeof(ficha), 1 , fichero); } else { printf("\nNo se ha encontrado el registro.\n"); } fclose (fichero); } void listar () { struct Tficha ficha; FILE *fichero; char usuario [50]; //Abrese o ficheiro como r para leer os datos do ficheiro fichero = fopen ("datos_bin.vaf", "rb"); //leer hasta final de ficheiro e amosar por pantalla while (!feof(fichero)) { fread (&ficha, sizeof(ficha), 1 , fichero); if (!feof(fichero)) printf("\n%s %d", ficha.usuario, ficha.edad); } fclose (fichero); }
No hay comentarios:
Publicar un comentario