Ver Mensaje Individual
  #1 (permalink)  
Antiguo 07/12/2009, 22:28
angelperdido
 
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