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

 

 


Tema destacado: Guía actualizada para evitar que un ransomware ataque tu empresa


  Mostrar Temas
Páginas: [1]
1  Programación / Programación C/C++ / tengo problemas con mi programa no puedo modificar ni eliminar datos del fichero en: 28 Diciembre 2015, 19:14 pm
alguien que pueda revisar mi codigo y ayudarme. esta en c y lo que necesito es que modifique bien y borre contacvtos del fichero solo que no se como hacerlo trate usando un fseek pero no se que hacer bien xc

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef struct{
   char nombre [35];
   char mail [25];
   int telefono;
}Contacto;

void menu (char* nombreArchivo);
Contacto crearContacto();
void guardarContacto(Contacto contacto, char* nombreArchivo);
void mostrarAgenda(char* nombreArchivo);
void borrarContacto(Contacto contacto, char* nombreArchivo);
void modificarContacto(Contacto contacto,char* nombreArchivo);
void pausar();
int i,buscar=0;
int main(){
   char nombreArchivo[12]="agenda.bin";
   
   menu (nombreArchivo);
      
}
void menu (char* nombreArchivo){
   int opcion;
   do{
      
      system ("cls");
      printf("1. Crear contacto:\n");
      printf("2.Consultar agenda:\n");
      printf("3.borrar contacto:\n");
      printf("4.Modificar contacto:\n");
      printf("5.salir:\n\n");
      printf("ingresa una opcion: ");
      scanf(" %d",&opcion);
      if (opcion>0 && opcion < 6){
         system("cls");
         switch (opcion){
            case 1:
               guardarContacto(crearContacto(),nombreArchivo);
               break;
            case 2:
               mostrarAgenda (nombreArchivo);
               break;
            case 3:
               borrarContacto(Contacto(),nombreArchivo);
               break;
            case 4:
               modificarContacto(Contacto(),nombreArchivo);
            case 5:
               printf("fin del programa \n");
               //pausar();
               break;
               
            
         }
      }
      else {
         printf("\nOpcion no contemplada\n");
         pausar ();
      }
   }while (opcion!=5);
   
}
 Contacto crearContacto(){
        Contacto contacto;
      
        printf("Nombre: ");
        scanf(" %[^\n]", contacto.nombre);
        printf("mail: ");
        scanf(" %[^\n]", contacto.mail);
        printf("Telefono: ");
        scanf(" %d", &contacto.telefono);
      
        return contacto;
    }

    void guardarContacto(Contacto contacto, char* nombreArchivo){
        FILE* file= fopen(nombreArchivo, "ab");
      
        if (file==NULL){
            printf("Error al intentar acceder al archivo\n");
            pausar();
        }
        else{
            fwrite(&contacto, sizeof(Contacto), 1, file);
            printf("\nContacto guardado!\n");
            pausar();
            fclose(file);
        }
    }
void mostrarAgenda(char* nombreArchivo){
        FILE* file= fopen(nombreArchivo, "rb");
        int i;
      
        if (file==NULL){
            printf("Error al intentar acceder al archivo\n");
            pausar();
        }
        else{
            Contacto contacto;
            printf("%2s %-35s %-25s %-14s\n", "ID", "Nombre", "mail", "Telefono");
            i = 0;
            while (fread(&contacto, sizeof(Contacto), 1, file)){
               i++;
                printf("%-2u %-35s %-25s %-14d\n", i, contacto.nombre, contacto.mail, contacto.telefono);
            }
            fclose(file);
            printf("\n\n");
            pausar();
        }
    }
void borrarContacto(Contacto contacto,char*nombreArchivo){
   FILE*file=  fopen(nombreArchivo,"wb");
   if (file==NULL){
      printf("no se encontro el contacto a borrar");
      pausar();
      
   }
   else {
   fwrite(&contacto,sizeof(Contacto),1,file);
      printf("\n Contacto eliminado:\n");
      pausar();
      fclose(file);
      
   }
}

void  modificarContacto(Contacto contacto, char*nombreArchivo){
   FILE*file=  fopen(nombreArchivo,"a+b");
   Contacto vec[1];


   printf("ingresa el ID de registro que deseas modificar: ");
   scanf("%i",&buscar);

   fseek(file, 100* sizeof(Contacto), SEEK_SET);
   fwrite(&vec,sizeof(Contacto),1,file);
   
   fseek(file, 100* sizeof(Contacto), SEEK_SET);
   fread(&vec,sizeof(Contacto),1,file);
   
   fgets(nombreArchivo,80,file);


   ftell(file);
   fclose(file);
}
void pausar(){
    printf("Presione ENTER para continuar");
  
    while (getchar() != '\n');
    getchar();
  
    printf("");
}
Páginas: [1]
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines