Agenda
Publicado por César Rocha 21/02/2006
[ Hits: 8.282 ]
Agenda de nomes e telefones que utiliza arquivos para armazenar os dados, feita em C.
#include <stdio.h> #include <string.h> #include <stdlib.h> typedef struct agenda nomes; void criar_lista (void); void inclusao (void); void remover (void); void leitura (void); void escrever (void); void ajuda (void); void imprimir (void); struct agenda{ char nome[30]; char tele[8]; nomes *prox; nomes *ante; }; nomes *first; nomes *last; //criando lista... void criar_lista() { first=(nomes*)malloc(sizeof(nomes)); last=(nomes*)malloc(sizeof(nomes)); last=first; first->prox=NULL; first->ante=NULL; } //abertura... void main() { char menu; do { printf("\nMenu:\n"); printf("\tA) Inserir, alterar, apagar ou informacoes, digite A.\n"); printf("\tL) Leitura de dados gravados no disco, digite L.\n"); printf("\tI) Imprimir os nomes da lista na tela, digite I.\n"); printf("\tE) Salvar nomes da lista no arquivo, digite E.\n"); printf("\tH) Help-me, digite H.\n"); printf("\tF) Fim do programa, digite F.\n"); printf("\nDigite -> "); scanf("%s",&menu); if (menu!='A'&&menu!='L'&&menu!='I'&&menu!='E'&&menu!='F'&&menu!='H') printf("\n\n\tOpcao de menu invalida!\n\n"); switch (menu) { case ('A'): inclusao(); break; case ('L'): leitura(); break; case ('I'): imprimir(); break; case ('E'): escrever(); break; case ('H'): ajuda(); break; case ('F'): break; } } while (menu!='F'); } //inclusao... void inclusao () { nomes *aux, *next, *prev; aux = (nomes*)malloc(sizeof(nomes)); char nome[30],tel[8]; printf("Qual o nome a ser incluido/alterado/apagado?\n"); printf("Nome: "); scanf("%s", &aux->nome); printf("Tel: "); scanf("%s", &aux->tele); strcpy(nome,aux->nome); strcpy(tel,aux->tele); if ((strcmp(aux->tele,"?")!=0)&&(strcmp(aux->tele,"/")!=0)) { aux->prox = NULL; aux->ante = NULL; if(first==NULL) { first = aux; last = aux; return; } next = first; prev = NULL; while(next) { if(strcmp(next->nome, aux->nome)<0) { prev = next; next = next->prox; } else { if(next->ante) { next->ante->prox = aux; aux->prox = next; aux->ante = next->ante; next->ante = aux; return; } aux->prox = next; aux->ante = NULL; next->ante = aux; first = aux; return; } } prev->prox = aux; //final aux->prox = NULL; aux->ante = prev; last = aux; } else { if (strcmp(aux->tele,"?")==0) { for (aux=first;aux;aux=aux->prox) { if (strcmp(aux->nome,nome)==0) { printf("\nNome: %s", aux->nome); printf("\nTel: %s\n", aux->tele); break; } } } if (strcmp(aux->tele,"/")==0) { for(aux=first;aux;aux=aux->prox) { if(strcmp(aux->nome,nome)==0){ strcpy(aux->tele,tel); break; } } if (aux->ante) aux->ante->prox=aux->prox; else { first=aux->prox; if (first) first->ante=NULL; } if (aux->prox) aux->prox->ante=aux->ante; else last=aux->ante; } } } //imprimir arquivo na tela... void leitura() { FILE *arquivo; char nome[30],tele[8]; arquivo=fopen("Agenda.txt","r"); if (!arquivo) { printf("\n\n\tErro na abertura do arquivo!\n\n"); exit(0); } printf("\n\t*****Nome*****|*****Fone*****\n"); while (!feof(arquivo)) { fscanf(arquivo,"%s %s ",&nome,&tele); fprintf(stdout,"\t %s %s\n",nome,tele); } fclose(arquivo); } //imprimir lista na tela... void imprimir() { nomes *aux; printf("\n\t*****Nome*****|*****Fone*****\n"); aux=first; if (aux==NULL) printf("\n\n\tLista Vazia!\n\n"); else{ do { if ((aux==last)||(aux->prox==NULL)) { printf("\t %s %s\n", aux->nome,aux->tele); break; } else { printf("\t %s %s\n", aux->nome,aux->tele); aux=aux->prox; } } while (aux!=NULL); } } //salvar lista digitada... void escrever () { FILE *arquivo; nomes *aux,*aux2; aux=(nomes*)malloc(sizeof(nomes)); arquivo=fopen("Agenda.txt","a"); if (!arquivo) { printf("\n\n\tErro na abertura do arquivo!\n\n"); exit(0); } printf("\nSalvando arquivo...\n"); aux=first; while (aux!=NULL) { fprintf(arquivo,"%s %s ",aux->nome,aux->tele); aux=aux->prox; } fclose(arquivo); aux=first; while (first) { aux=first; first=first->prox; free(aux); } last=NULL; } //ajuda... void ajuda() { printf("\n\n1) Alterar nome: va em Adicionar digite o nome existente com o novo numero!"); printf("\n2) Apagar nome: va em Adicionar digite o nome e coloque / no lugar do numero!"); printf("\n3) Procurar nome: va em Adicionar digite o nome e coloque ? no lugar do numero!\n\n"); }
Um algoritmo genético para o TSP (Travel Salesman Problem)
Angelinux Scripts - Palpite para Megasena em C
Função para exibir todos os divisores de um numero
Decimal, Hexa, Char para Binário
Nenhum comentário foi encontrado.
Compartilhando a tela do Computador no Celular via Deskreen
Como Configurar um Túnel SSH Reverso para Acessar Sua Máquina Local a Partir de uma Máquina Remota
Configuração para desligamento automatizado de Computadores em um Ambiente Comercial
Como renomear arquivos de letras maiúsculas para minúsculas
Imprimindo no formato livreto no Linux
Vim - incrementando números em substituição
Efeito "livro" em arquivos PDF
Como resolver o erro no CUPS: Unable to get list of printer drivers
Acabei de formatar meu ssd e deu erro (3)
Desempenho abaixo do esperado - travadas e congelamento do sistema ope... (5)
Bash ao invés de Fish no CachyOS (1)
[Python] Automação de scan de vulnerabilidades
[Python] Script para analise de superficie de ataque
[Shell Script] Novo script para redimensionar, rotacionar, converter e espelhar arquivos de imagem
[Shell Script] Iniciador de DOOM (DSDA-DOOM, Doom Retro ou Woof!)
[Shell Script] Script para adicionar bordas às imagens de uma pasta