Código:
faltan partes pero deberia de correr corectamente asi #include <stdio.h> #include <conio.h> #include <string.h> #include <stdlib.h> FILE *fp; struct Direc{ char nume[6]; char nom[15]; char direc[15]; char numtel[10]; char mail[15]; }directorio; // === funciones === void crear(); // void anexar(); void modificar(); // void eliminar(); void reporte(); // ----------------PROGRAMA PRINCIPAL ---------------------------- void main() { char resp; do { clrscr(); printf("\n\n\t\t\t* * * * * MENU DE OPCIONES * * * * *"); printf("\n\t\t---------------------------------------------------"); printf("\n\t\t\t DIRECTORIO DE EMPLEADOS "); printf("\n\t\t-------------------------------------------------\n\n\n\n"); printf("\t\t\t\t (1) CREAR EL DIRECTORIO \n"); printf("\t\t\t\t (2) ANEXAR EMPLEADOS \n"); printf("\t\t\t\t (3) MODIFICAR DATOS \n"); printf("\t\t\t\t (4) ELIMINAR \n"); printf("\t\t\t\t (5) REPORTE \n"); printf("\t\t\t\t (6) SALIR ........ "); printf("\n\n\t\t\t\tSelecciona: "); resp=getchar(); switch(resp) { case '1': crear(); break; // case '2': anexar(); // break; case '3': modificar(); break; // case '4': eliminar(); // break; case '5': reporte(); break; case '6' : exit(1); } } while(resp!='6'); } // === Funcion de crear un archivo ==== elaborada por : Lilia Patricia Velasco H. void crear() { clrscr(); char opcion = 's'; if ((fp=fopen("directorio.dat","wb"))==NULL) printf("\n\n\n\n\t\t< < < Error de apertura de archivo directorio.dat > > >"); else { while(opcion == 's'){ printf("\n\n Escribe el No. del empleado :"); scanf("%s",&directorio.nume); printf("\n\n Escribe el nombre del empleado :"); scanf("%s",&directorio.nom); printf("\n\n Escribe direccion del empleado :"); scanf("%s",&directorio.direc); printf("\n\n Escribe el telefono del empleado :"); scanf("%s",&directorio.numtel); printf("\n\n Escribe el correo electronico :"); scanf("%s",&directorio.mail); fwrite(&directorio, sizeof(directorio), 1, fp); printf("\n\n\n\t\t Desea entrar otro empleado [s/n] : "); opcion = getchar(); getch(); } } fclose(fp); } // === Funcion modificar ==== elabroada por : Hugo Abarca B. void modificar() { clrscr(); int opc,i=0; char elim[6]; printf("\nINGRESE LA CLAVE del empleado a modificar MODIFICAR: "); scanf("%s",&elim); fp=fopen("directorio.dat","r+b"); if(!fp) printf("\n Error de apertura del archivo directorio.dat\n"); else{ while (((fread(&directorio, sizeof(directorio), 1, fp))!=0)&&i!=1){ if(directorio.nume==elim){ printf ("\nQUE DESEA MODIFICAR: "); printf ("\n\t\t\t1.-NOMBRE\n"); printf("t\t\t2.-DIRECCION\n"); printf ("\t\t\t3.-TELEFONO\n"); printf("\t\t\t4.-correo electronico"); scanf("%d",&opc); switch (opc){ case 1: printf ("\nINGRESA EL NOMBRE: "); scanf("%s",&directorio.nom); break; case 2: printf ("\nINGRESA SU DIRECCION "); scanf("%s",&directorio.direc); break; case 3: printf ("\nINGRESA SU NUMERO TELEFONICO "); scanf("%s",&directorio.numtel); break; case 4: printf ("\nINGRESA su e-mail: "); scanf("%d",&directorio.mail); break; } fseek(fp,-sizeof(directorio),SEEK_CUR); fwrite(&directorio,sizeof(directorio), 1, fp); i=1; fclose(fp); } } i=0; } } // === Funcion reporte ==== elaborada por : Filemon Rodriguez Santillan void reporte() //funcion para generar el reporte de la informacion capturada { clrscr(); // limpia la pantalla FILE *dire; //Asigna un apuntador de tipo archivo dire = fopen("directorio.dat", "r"); //verifica la apertura en modo lectura del archivo en donde se almacena la informacion if(dire == NULL) // si el valor del apuntador es iguala NULO { printf("\nNo existe archivo"); // manda un mensaje de que no existe el archivo } fread(&directorio, sizeof(struct Direc), 1, dire); //retorna el numero de caracteres leidos printf("\n\nNombre \tDireccion \tTelefono \tCorreo Electronico"); //imprime encabezado con los datos solicitados while(!feof(dire)) //mientras no sea fin de archivo { printf("\n%s \t%s \t%s \t%s", directorio.nom, // imprime la informacion contenida dentro del archivo .DAT directorio.direc, directorio.numtel, directorio.mail); fread(&directorio, sizeof(struct Direc), 1, dire); } fclose(dire); // cierra el archivo getch(); //lee desde el teclado }