Ir ao conteúdo
  • Cadastre-se

C Linguagem C remover contato alguém sabe ?


Jaque021

Posts recomendados

Faça um programa gerenciar uma agenda de contatos. Para cada contato armazene o nome, o telefone e o aniversário (dia e mês). O programa deve permitir

 

(1) inserir contato

(2) remover contato

(3) pesquisar um contato pelo nome

(4) listar todos os contatos

(5) listar os contatos cujo nome inicia com uma dada letra

(6) imprimir os aniversariantes do mês.

não consigo fazer a parte de remover contato :(

#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include<locale.h>
#include<string.h>
typedef struct data DATA;
    struct data{
    int dia;
    int mes;
    int ano;
};
typedef struct contato CONTATO;
    struct contato{
    char nome[30];
    char fone[15];
    DATA aniv;
};

void cabecalho();
void inputData();
void listar();
void pesquisar();
void anivMes();
void excluir();

int main(){
  setlocale(LC_ALL,"portuguese");
  int opcao;

  do{
        cabecalho();
        printf("1 - inserir\n");
        printf("2 - Remover\n");
        printf("3 - pesquisar pelo nome\n");
        printf("4 - listar\n");
        printf("5 - listar por uma inicial\n");
        printf("6 - imprimir aniversariante do mês\n");
        printf("7 - sair\n\n");
        printf("Escolha uma opção: ");
        scanf("%d",&opcao);

        switch(opcao){
        case 1:
            inputData();
        break;

        case 2:

        break;

        case 3:
            pesquisar();
        break;

        case 4:
            listar();
        break;

        case 5:
        break;

        case 6:
            anivMes();
       break;

        case 7:
            printf("obrigado pela visita!\n");
        break;

        default:
          printf("Opção inválida!\n");
          getch();
        break;
    }
  }while(opcao!=7);
}

void cabecalho(){
  system("cls");
  printf("----------------------------\n");
  printf("    AGENDA ELETRONICA\n");
  printf("----------------------------\n\n");
}

void inputData(){
   FILE* f;
   CONTATO ctt;
   cabecalho();
   f = fopen("agenda.txt","ab");

   if(f == NULL){
     printf("problemas na abertura do arquivo\n");
   }
   else{
      do{
        fflush(stdin);
        printf("digite o nome: ");
        gets(&ctt.nome);

        fflush(stdin);
        printf("digite o fone: ");
        gets(&ctt.fone);

        printf("digite o aniversário: ");
        scanf("%d %d %d", &ctt.aniv.dia,&ctt.aniv.mes, &ctt.aniv.ano);

        fwrite(&ctt,sizeof(CONTATO),1,f);

        printf("deseja continuar (s/n)?\n");

      }while(getche()=='s');
      fclose(f);
}
}
 void listar(){
     FILE* f;
     CONTATO ctt;
     cabecalho();
     f = fopen("agenda.txt","rb");

     if(f==NULL){
        printf("Erro na abertura\n");
     }
     else{
        while(fread(&ctt, sizeof(CONTATO),1,f)== 1 ){
         printf(" Nome:  %s\n",ctt.nome);
         printf(" Fone:  %s\n",ctt.fone);
         printf(" Aniversário:  %d/%d/%d\n",ctt.aniv.dia, ctt.aniv.mes, ctt.aniv.ano);
         printf("----------------------\n\n");
        }
     }
     fclose(f);
     getch();
   }
void pesquisar(){

 FILE* f;
 CONTATO ctt;
 char  nome[30];
 cabecalho();
 f = fopen("agenda.txt","rb");
 if(f==NULL){
    printf("problemas na abertura do arquivo");
 }
 else{
    fflush(stdin);
    printf("digite o nome a pesquisar\n");
    gets(nome);

    while(fread(&ctt,sizeof(CONTATO),1,f)==1 ){
    if (strcmp(nome,ctt.nome)==0){
         printf(" Nome:  %s\n",ctt.nome);
         printf(" Fone:  %s\n",ctt.fone);
         printf(" Aniversário:  %d/%d/%d\n",ctt.aniv.dia, ctt.aniv.mes, ctt.aniv.ano);
         printf("----------------------\n\n");
   }

  }
}
 fclose(f);
 getch();
}
void anivMes(){

    FILE* f;
    CONTATO ctt;
    cabecalho();
    f = fopen("agenda.txt","rb");
    if(f == NULL){
        printf("Problema na abertura\n");
    }
    else{
     int mes;
     printf("Digite o mês\n");
     scanf("%d",&mes);

     while (fread(&ctt,sizeof(CONTATO),1,f)==1){
        if(mes==ctt.aniv.mes){
         printf(" Nome:  %s\n",ctt.nome);
         printf(" Fone:  %s\n",ctt.fone);
         printf(" Aniversário:  %d/%d/%d\n",ctt.aniv.dia, ctt.aniv.mes, ctt.aniv.ano);
         printf("----------------------\n\n");

        }
    }
}
    fclose(f);
    getch();
}

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

@Jaque021   para remover no arquivo é difícil pois você precisa procurar cada dado no arquivo e então deleta-lo,  mais fácil seria  você  pegar os dados no arquivo e colocar no struct, depois na função remover você procura, por exemplo,  assim :

for(i=0;i<cont;i++){
    if(nome_do_struct[i] == dado_procurado){
        for(j=i;j < cont;j++){
            nome_do_strruct[j] = nme_do_struct[j+1];
        }
        cont--;
    }
}

depois na saída do programa  delete o arquivo todo usando o comando 

remove(" nome_do_arquivo .txt");

e cria na mesma hora esse mesmo arquivo, mas sem nada nele, e coloca os dados atualizados que estão no struct , nele .

f=fopen("nome_do_arquivo.txt","w");

 

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...