
07/12/2009, 22:28
|
| | Fecha de Ingreso: octubre-2009
Mensajes: 19
Antigüedad: 15 años, 5 meses Puntos: 0 | |
pueden darle un vistaso hola tengo este codigo que al querer modificar algo no me deja me pueden hacer ver mi error gracias
Código:
#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
}
faltan partes pero deberia de correr corectamente asi |