Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Seguinte.. recebi um trabalho para fazer na faculdade, uma agenda e tal. Até agora eu criei só o esqueleto dela, minha dúvida está na parte de pesquisar e excluir um contato dela. Também tenho que ordenar os contatos em ordem alfabética. Queria que vcs me dessem uma luz quanto as funções, pelo menos um caminho, estou totalmente perdido :( (Ainda tem que guardar tudo isso em um arquivo)
#include <stdio.h>
#include <stdlib.h>
// Protótipos das Funções
void abrir (void);
void inserir (void);
void pesquisar (void);
void pesquisar_nome (void);
void pesquisar_cidade (void);
void pesquisar_estado (void);
void apagar (void);
int q=0, i;
FILE *fp;
//----------------------------------------------------------------------------------
// Estrutura de Dados
struct agenda{
char nome[20];
char sobrenome[30];
char endereco[40];
char numero[10];
char complemento[20];
char bairro[20];
char cidade[20];
char estado[20];
char telefone[20];
char celular[20];
}x[5];
//------------------------------------------------------
// Função para Abrir Arquivo
//------------------------------------------------------
// Função para Inserir Contato
void inserir()
{
fp = fopen ("arquivo.txt", "a");
if (fp == NULL){
printf ("Erro na abertura do arquivo!\n\n");
} for (i=0; i<3; i++){
fflush(stdin);
printf ("\nNome: ");
gets (x[q].nome);
printf ("Sobrenome: ");
gets (x[q].sobrenome);
printf ("Endereco: ");
gets (x[q].endereco);
printf ("Numero: ");
gets (x[q].numero);
printf ("Complemento: ");
gets (x[q].complemento);
printf ("Bairro: ");
gets (x[q].bairro);
printf ("Cidade: ");
gets (x[q].cidade);
printf ("Estado: ");
gets (x[q].estado);
printf ("Telefone: ");
gets (x[q].telefone);
printf ("Celular: ");
gets (x[q].celular);
printf ("\n\n");
// Gravação de Dados no Arquivo
fprintf (fp, "\nNome: %s\n", x[q].nome);
fprintf (fp, "Sobrenome: %s\n", x[q].sobrenome);
fprintf (fp, "Endereco: %s\n", x[q].endereco);
fprintf (fp, "Numero: %s\n", x[q].numero);
fprintf (fp, "Complemento: %s\n", x[q].complemento);
fprintf (fp, "Bairro: %s\n", x[q].bairro);
fprintf (fp, "Cidade: %s\n", x[q].cidade);
fprintf (fp, "Estado: %s\n", x[q].estado);
fprintf (fp, "Telefone: %s\n", x[q].telefone);
fprintf (fp, "Celular: %s\n", x[q].celular);
}
fclose(fp);
}
//------------------------------------------------------------
// Função para Pesquisar Contato
void pesquisar()
{
int op_2;
printf ("\n===========================\n");
printf ("Escolha uma opcao:\n\n");
printf ("1. Pesquisar por nome\n");
printf ("2. Pesquisar por cidade\n");
printf ("3. Pesquisar por estado\n");
printf ("4. Voltar ao Menu Principal\n");
printf ("===========================\n\n");
printf ("* Opcao: ");
scanf ("%d", &op_2);
printf ("\n");
switch (op_2){
case 1:
//printf ("Funciona!\n");
pesquisar_nome();
break;
case 2:
//pesquisar_cidade();
break;
case 3:
//pesquisar_estado();
break;
case 4:
main();
break;
default:
printf ("Opcao Invalida - Tente Novamente\n");
pesquisar();
break;
}
}
//------------------------------------------------------------
// Função Pesquisar Contato por Nome
void pesquisar_nome ()
{
char nome_1[30];
printf ("Digite o nome que voce deseja pesquisar: ");
scanf ("%s", &nome_1);
for (q=0; q<3; q++){
if (strcmp (nome_1, x[q].nome)== 0){ // Aqui é comparada a string "nome_1" com a string "x[q].nome", se elas forem iguais, a função retorna 0, e então se printa os dados na tela.
printf ("\nNome: %s\n", x[q].nome);
printf ("Sobrenome: %s\n", x[q].sobrenome);
printf ("Endereco: %s\n", x[q].endereco);
printf ("Numero: %s\n", x[q].numero);
printf ("Complemento: %s\n", x[q].complemento);
printf ("Bairro: %s\n", x[q].bairro);
printf ("Cidade: %s\n", x[q].cidade);
printf ("Estado: %s\n", x[q].estado);
printf ("Telefone: %s\n", x[q].telefone);
printf ("Celular: %s\n\n", x[q].celular);
printf ("Pesquisa Concluida !\n\n");
}
}
}
// Função para Excluir Dados
void apagar ()
{
}
// -----------------------------------------------------------
int main()
{
int op;
do{
printf ("======== Menu ========\n");
printf ("1. Abrir Arquivo\n");
printf ("2. Inserir Contato\n");
printf ("3. Pesquisar Contato\n");
printf ("4. Apagar Contato\n");
printf ("5. Sair\n");
printf ("======================\n\n");
printf ("* Escolha sua opcao: ");
scanf ("%d", &op);
switch (op){
case 1:
//abrir();
break;
case 2:
inserir();
break;
case 3:
pesquisar();
break;
case 4:
//apagar();
break;
case 5:
printf ("\nFim do programa\n");
break;
default:
printf ("Opcao Invalida - Tente Novamente\n\n");
break;
}
}while(op != 5);
//------------------------------------------------------------
system("PAUSE");
return 0;
}
É tera que trabalhar os contatos em blocos..
sempre usará uma struct para armazenar os dados lidos do txt..
para ordenar veja sobre o comando strcoll;
[]s