Ir para conteúdo
Fórum Script Brasil
  • 0

Agenda Em C


humberto

Pergunta

aí galera beleza? tipo.....preciso de uma agenda q cadastre nome e telefone....

e tem q ter o ID ...q vai ser um contador não é?....

já tenho esse código todo aqui....mas tipo.....queria q dessem uma olhada na função Consultar..... q tah aparecendo na tela muito bagunçado...

e se alguém souber como, criar a funcao pra alterar, e uma pra exlcluir

valeu ae

aqui está o código: (clrscr() tah como comentario porque n acho a biblioteca dele no dev C++)

 

#include <stdio.h>
#include <ctype.h>
#include <stdlib.h>
#include <string.h>
#include <conio.h>
#define TAM 100

struct contato {
  char nome[50];
  char telefone[30];
  int id;
} tcontato[TAM];


void iniciar(void), cadastrar(void);
void salvar(void);
void consultar(void);

void main(void)
{
  char opcao[30];
  int c;

  iniciar();
  //clrscr();
  for(;;) {
   do {
     //clrscr();
        printf("\n 1. >>> Cadastrar\n");
        printf(" 2. >>> Consultar\n");
    printf(" 3. >>>\n");
        printf(" 4. >>> Salvar\n");
        printf(" 5. >>> Sair\n");
        printf("\n Entre com sua escolha: ");
        gets(opcao);
        c = atoi(opcao);
        } while(c<0 || c>5);

    switch(c) {
  case 1:
  	cadastrar();
  	break;
  case 2:
  	consultar();
  	break;
  case 3:

  	break;
  case 4:
  	salvar();
  	break;
  case 5:
  	exit(0);
    }
  }
}

/* Inicializa a lista. */
void iniciar(void)
{
  register int t;
  for(t=0; t<TAM; t++)
       *tcontato[t].nome = '\0';
  /* um nome de comprimento zero significa vazio */
}

/* poe os nomes na lista */
void cadastrar(void)
{
  register int i;


  for(i=0; i<TAM; i++)
     if(!*tcontato[i].nome)
        break;

  if(i==TAM)
  {
  //clrscr();
  printf("\n Lista cheia\n");
  getch();
  return;
  }

  tcontato[i].id = tcontato[i].id + 1;

  printf("\n Nome: ");
  gets(tcontato[i].nome);

  printf("\n Telefone: ");
  gets(tcontato[i].telefone);

  printf("\nCadastrado com sucesso!!!");
  getch();
}

/* Salva a lista. */
void salvar(void)
{
  FILE *arq;
  register int i;

  if((arq=fopen("agenda.txt", "wt"))==NULL)
  {
  //clrscr();
  printf(" O arquivo não pode ser aberto\n");
  getch();
  return;
  }

  for(i=0; i<TAM; i++)
  if(*tcontato[i].nome)
  if(fwrite(&tcontato[i],
    sizeof(struct contato), 1, arq)!=1)
    {
    //clrscr();
    printf(" Erro de gravaçao no arquivo\n");
    getch();
    }
}

// Consulta o arquivo
void consultar(void)
{
       FILE *arq;
       register int i;

       arq = fopen("agenda.txt", "r");
       if(arq)
       {
            for(i=0; i<TAM; i++){
               while(tcontato[i].id!=0){
            if(fread(&tcontato[i],sizeof(struct contato), 1, arq)!=1)
                        printf("%d-\n",tcontato[i].id);
                  break;
               }
            }

            for(i=0; i<TAM; i++)
            if(*tcontato[i].nome)
            if(fread(&tcontato[i],sizeof(struct contato), 1, arq)!=1)
                       printf("%s\n",tcontato[i].nome);

             for(i=0; i<TAM; i++)
               if(*tcontato[i].telefone)
            if(fread(&tcontato[i],sizeof(struct contato), 1, arq)!=1)
                        printf("%s\n",tcontato[i].telefone);

             fclose(arq);
       }
       else
           printf("ERRO na abertura do arquivo.");
}
Editado por humberto
Link para o comentário
Compartilhar em outros sites

2 respostass a esta questão

Posts Recomendados

  • 0

Para alterar e excluir você pode criar um outro arquivo (auxiliar) e "jogar" tudo do arquivo original para este outro. No caso de alterar quando o programa chegar ao registro que deve ser alterado, ao invés de utilizar as informações do arquivo original, ele usará as novas informações inseridas. No caso de excluir, basta pular o registro que deve ser alterado. Ambas as rotinas serão muito parecidas. Ao final, basta apagar o arquivo original e renomear o auxiliar para o nome do original (ou seja, ele passa a ser o original, porém modificado).

Abraços,

Graymalkin

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,5k
×
×
  • Criar Novo...