#include<stdio.h>
#include<stdlib.h>
#include<string.h>
struct contato {
char *nome;
char endereco[50];
int telefone;
char email[30];
};
typedef struct contato Contato;
void listar_contatos(Contato *v, int q) {
int i;
for (i=0; i<q; i++) {
printf("\nContato %d => %s|%s|%d|%s \n", i+1,
v[i].nome,v[i].endereco,v[i].telefone,v[i].email);
}
}
int pesquisar_nome(Contato *v, int q, char *nome) {
int i;
for (i=0; i<q; i++) {
if (strcmp(v[i].nome,nome)==0) {
printf("\nEncontrado: Contato %d => %s|%s|%d|%s \n", i+1,
v[i].nome,v[i].endereco,v[i].telefone,v[i].email);
return 0;
}
}
printf("\nContato nao encontrado!\n");
return 1;
}
int pesquisar_telefone(Contato *v, int q, int telefone) {
int i;
for (i=0; i<q; i++) {
if (v[i].telefone == telefone) {
printf("\nEncontrado: Contato %d => %s|%s|%d|%s \n", i+1,
v[i].nome,v[i].endereco,v[i].telefone,v[i].email);
return 0;
}
}
printf("\nContato nao encontrado!\n");
return 1;
}
int main(void)
{
Contato *vContatos; int quant;
printf("\nQuantos contatos deseja cadastrar? ");
scanf("%d", &quant); vContatos = (Contato *) malloc(sizeof(Contato)*quant); int i;
for (i=0; i<quant; i++) {
printf("\nContato %d - digite nome: ", i+1); vContatos[i].nome = (char *) malloc(sizeof(char)*50);
scanf(" %50[^\n]%*c", vContatos[i].nome);
printf("\nContato %d - digite endereco: ", i+1);
scanf(" %50[^\n]%*c", vContatos[i].endereco);
printf("\nContato %d - digite telefone: ", i+1);
scanf("%d", &(vContatos[i].telefone));
printf("\nContato %d - digite email: ", i+1);
scanf(" %30[^\n]%*c", vContatos[i].email);
}
int opcao;
char nome[50];
int telefone;
do {
printf("\nEscolha uma opcao:");
printf("\n1 - Listar contatos");
printf("\n2 - Pesquisar por nome");
printf("\n3 - Pesquisar por telefone");
printf("\n4 - Sair\n=> ");
scanf("%d", &opcao);
switch (opcao) {
case 1:
listar_contatos(vContatos, quant);
break;
case 2:
printf("\nDigite o nome desejado: ");
scanf(" %50[^\n]%*c", nome);
pesquisar_nome(vContatos, quant, nome);
break;
case 3:
printf("\nDigite o telefone desejado: ");
scanf("%d", &telefone);
pesquisar_telefone(vContatos, quant, telefone);
break;
case 4:
for (i=0; i<quant; i++)
free(vContatos[i].nome);
free(vContatos);
printf("\nTchau!\n");
break;
default:
printf("\nOpcao invalida. Tente novamente.\n");
}
} while (opcao != 4);
system("pause");
return 0;
}