1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

Agenda Telefonica em C (parte 2)

Discussão em 'Programação' iniciada por raptor123, 5 de Março de 2006. (Respostas: 3; Visualizações: 3580)

  1. Boas!
    Tenho uma agenda telefonica em C para fazer, o k falta é apagar os nomes de contacto, sok nao fazo a minima de como se faz, se pudessem ajudar, agradecia ek é muito importante!

    #include<stdio.h>
    #include<conio.h>
    #include<stdlib.h>
    #include<string.h>
    #include <dos.h>
    int mostralista()
    {
    char ch;
    printf("Lista de contactos :\n\n");
    FILE *vx3;
    vx3 = fopen("pap.txt" , "r");
    ch=getc(vx3); // Lê um caracter do ficheiro "pap.txt".
    while(ch!=EOF) //Enquanto o caracter nao chegar ao fim do ficheiro...
    {
    putchar(ch); // Mostra no monitor o ficheiro "pap.txt".
    ch=getc(vx3); // Guarda o caracter ch no ficheiro "pap.txt"
    }
    fclose(vx3); // Fecha o ficheiro "pap.txt".
    getch();
    }
    char inserir()
    {
    char nome[10];
    char morada[25];
    char opcao;
    int telefone;
    FILE *vx3;
    fflush(stdin); // Despeja os dados no disco
    vx3 = fopen("pap.txt" , "a"); // Abre o ficheiro "pap.txt".
    printf("Insira o nome do contacto: ");
    gets(nome); // Guarda o nome do contacto na variavel "nome".
    fflush(stdin); // Despeja os dados no disco
    printf("Insira o numero de telefone: ");
    scanf("%d", &telefone); // Guarda o numero do telefone na variavel"telefone".
    fflush(stdin); // Despeja os dados no disco
    printf("Insira a morada: ");
    gets(morada);
    fflush(stdin);
    fprintf(vx3, "Nome do contacto: %s \n",nome); // Escreve no ficheiro "pap.txt"o nome do contacto que foi inserido anteriormente.
    fprintf(vx3, "Numero de telefone: %d \n", telefone); // Escreve no ficheiro"pap.txt" o numero de telefone do contacto que foi inserido anteriormente.
    fprintf(vx3, "Morada: %s \n\n", morada); // Escreve no ficheiro "pap.txt" amorada que foi inserida anteriormente.
    printf("Deseja inserir mais contactos? S/N \n");
    fflush(stdin); // Despeja os dados no disco
    scanf(" %c", &opcao); // Guarda a opção na variavel "opcao".
    switch(opcao) // Verifica se a opção é "n" ou "s".
    {
    case 's' :
    case 'S' : inserir() ; break; // Se for "s" chama outra vez a função"inserir" para inserir mais um contacto
    case 'n' :
    case 'N' : exit(1); break; // Se for "n" sai.
    }
    fclose(vx3); // Fecha o ficheiro "pap.txt".
    }

    int main()
    {
    printf("\t\t\tAgenda Telefonica\n"); // Mostra o menu.
    printf(" Carregue no numero para ir para a opção desejada :\n\n"); // Aparece amesagem "Carregue no numero para ir para a opção desejada :"
    printf("1 - Inserir/adicionar contacto na lista\n"); // Aparece a mensagem "1 -Inserir/adicionar contacto na lista"
    printf("2 - Consultar a agenda telefonica\n"); // Aparece a mensagem "2 -Consultar a agenda telefónica"
    printf("0 - Sair\n\n\n"); // Aparece a mensagem "0 - Sair"
    char escolha;
    scanf(" %s", &escolha); // Guarda a opção escolhida.
    switch(escolha) // Verifica qual foi a opção.
    {
    case '1' :
    inserir();
    break; // Caso a operação escolhida seja a "1" inicia o procedimento"inserir".
    case '2' :
    mostralista(); // Caso a opção escolhida seja "2" chama o procedimento"mostralista".
    break;

    case '0' :
    exit(1); // Caso a opção escolhida seja "0" sai.
    break;
    }
    }




    Cumps!
     
  2. TuxBoss

    TuxBoss Power Member

    A maneira certa seria criares uma estrutura de dados (Lista, array, wtv) para guardares os conteudos do ficheiro, os quais lias no inicio, fazias todas as operações de dados nessa estrutura e dps no fim (ou aquando de uma operação de modificação) gravavas os dados da estrutura para o disco.
     
  3. Nao me podiam dar um exemplo, ek eu por palavras nao vou lá
    Fikem bem!
     
  4. Karmack

    Karmack Power Member

    Quando crias um contacto escreves logo para o ficheiro. O melhor era guardares numa lista ou array os contactos (quando o programa arranca) e inserires nessa lista.

    O melhor é começares a definir uma estrutura de dados para cada entrada da lista telefonica.
    Depois crias globlamente um array de ponteiros para essa estrutura. Por enquanto o array pode ser finito (uns 200 elementos). Ao começar o programa começas a ler cada entrada dos contactos telefónicos e alocas na memórica dinamica com o ponteiro no array.

    Para remover basta libertares o ponteiro e pôr a entrada no array a zero.
     

Partilhar esta Página