Para a resolução da questão foram usados conhecimentos em C e algoritmos, com conceitos de arquivos e struct.
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
#include <conio.h>
#include <string.h>
typedef struct agenda
{
char nome[20];
int telefone;
}agenda;
FILE *arq;
agenda contato;
char menu()
{
printf("1 - Adicionar contato\n");
printf("2 - Mostrar lista de contatos\n");
printf("3 - Procurar contato pelo nome\n");
printf("4 - Procurar contato pelo numero\n");
printf("5 - Modificar contato\n");
printf("6 - Remover contato\n");
printf("0 - Sair\n");
printf("\n");
printf("> ");
return (toupper(getche()));
}
int verifica(char nome[])
{
fread(&contato,sizeof(agenda),1,arq);
while(!feof(arq))
{
if (strcmp(contato.nome,nome) == 0)
{
fseek(arq,-sizeof(agenda),SEEK_CUR);
return 1;
}
fread(&contato,sizeof(agenda),1,arq);
}
return 0;
}
int verifica_num(int num)
{
fread(&contato,sizeof(agenda),1,arq);
while(!feof(arq))
{
if (contato.telefone == num)
{
fseek(arq,-sizeof(agenda),SEEK_CUR);
return 1;
}
fread(&contato,sizeof(agenda),1,arq);
}
return 0;
}
void adiciona_contato()
{
char nome[20];
arq = fopen("banco.bin","a+b");
if (arq == NULL)
{
printf("Erro ao abrir arquivo\n");
return;
}
printf("\n\n");
printf("Digite o nome: ");
fflush(stdin);
gets(nome);
if (verifica(nome) == 1)
{
printf("\nNome ja existe.\n");
}
else
{
strcpy(contato.nome,nome);
printf("Digite o telefone: ");
scanf("%d", &contato.telefone);
fwrite(&contato,sizeof(agenda),1,arq);
}
fclose(arq);
}
void modifica()
{
char nome[20];
arq = fopen("banco.bin","r+b");
if (arq == NULL)
{
printf("Erro ao abrir arquivo\n");
return;
}
printf("\n\n");
printf("Digite nome do contato: ");
fflush(stdin);
gets(nome);
if (verifica(nome) == 1)
{
printf("\nDigite um novo nome: ");
fflush(stdin);
gets(nome);
strcpy(contato.nome,nome);
printf("\nDigite um novo numero de telefone: ");
scanf("%d", &contato.telefone);
fwrite(&contato,sizeof(agenda),1,arq);
}
else
{
printf("\nNome nao existe.\n");
}
fclose(arq);
}
void remove_contato()
{
char nome[20];
FILE *tmp;
arq = fopen("banco.bin","r+b");
if (arq == NULL)
{
printf("Erro ao abrir arquivo\n");
return;
}
tmp = fopen("banco.txt","a+b");
printf("\n\n");
printf("Digite nome do contato: ");
fflush(stdin);
gets(nome);
fread(&contato,sizeof(agenda),1,arq);
while (!feof(arq))
{
if (strcmp(contato.nome,nome) != 0)
{
fwrite(&contato,sizeof(agenda),1,tmp);
}
fread(&contato,sizeof(agenda),1,arq);
}
fclose(arq);
fclose(tmp);
system("del banco.bin");
system("ren banco.txt banco.bin");
}
void procura_nome()
{
char nome[20];
arq = fopen("banco.bin","r+b");
if (arq == NULL)
{
printf("Erro ao abrir arquivo\n");
return;
}
printf("\n\n");
printf("Digite o nome: ");
fflush(stdin);
gets(nome);
if (verifica(nome) == 1)
{
fread(&contato,sizeof(agenda),1,arq);
printf("\n\n");
printf("----------------------------------------\n");
printf("CONTATOS | TELEFONE \n");
printf("----------------------------------------\n");
printf("%-20s %8d\n", contato.nome,contato.telefone);
printf("----------------------------------------\n");
}
else
{
printf("\nContato nao existe.\n");
}
fclose(arq);
}
void procura_num()
{
int num;
arq = fopen("banco.bin","r+b");
if (arq == NULL)
{
printf("Erro ao abrir arquivo\n");
return;
}
printf("\n\n");
printf("Digite o telefone: ");
scanf("%d", &num);
if (verifica_num(num) == 1)
{
fread(&contato,sizeof(agenda),1,arq);
printf("\n\n");
printf("----------------------------------------\n");
printf("CONTATOS | TELEFONE \n");
printf("----------------------------------------\n");
printf("%-20s %8d\n", contato.nome,contato.telefone);
printf("----------------------------------------\n");
}
else
{
printf("\nContato nao existe.\n");
}
fclose(arq);
}
void mostrar_lista()
{
arq = fopen("banco.bin","r+b");
if (arq == NULL)
{
printf("Erro ao abrir arquivo\n");
return;
}
printf("\n\n");
printf("----------------------------------------\n");
printf("CONTATOS | TELEFONE \n");
printf("----------------------------------------\n");
fread(&contato,sizeof(agenda),1,arq);
while (!feof(arq))
{
printf("%-20s %8d\n", contato.nome,contato.telefone);
fread(&contato,sizeof(agenda),1,arq);
}
printf("----------------------------------------\n");
fclose(arq);
}
int main()
{
char op;
do
{
op = menu();
switch(op)
{
case '1': adiciona_contato(); break;
case '2': mostra_lista(); break;
case '3': procura_nome(); break;
case '4': procura_num(); break;
case '5': modificar(); break;
case '6': remove_contato(); break;
}
printf("\n");
system("PAUSE");
}while (op != '0');
return 0;
}
Para a resolução da questão foram usados conhecimentos em C e algoritmos, com conceitos de arquivos e struct.
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
#include <conio.h>
#include <string.h>
typedef struct agenda
{
char nome[20];
int telefone;
}agenda;
FILE *arq;
agenda contato;
char menu()
{
printf("1 - Adicionar contato\n");
printf("2 - Mostrar lista de contatos\n");
printf("3 - Procurar contato pelo nome\n");
printf("4 - Procurar contato pelo numero\n");
printf("5 - Modificar contato\n");
printf("6 - Remover contato\n");
printf("0 - Sair\n");
printf("\n");
printf("> ");
return (toupper(getche()));
}
int verifica(char nome[])
{
fread(&contato,sizeof(agenda),1,arq);
while(!feof(arq))
{
if (strcmp(contato.nome,nome) == 0)
{
fseek(arq,-sizeof(agenda),SEEK_CUR);
return 1;
}
fread(&contato,sizeof(agenda),1,arq);
}
return 0;
}
int verifica_num(int num)
{
fread(&contato,sizeof(agenda),1,arq);
while(!feof(arq))
{
if (contato.telefone == num)
{
fseek(arq,-sizeof(agenda),SEEK_CUR);
return 1;
}
fread(&contato,sizeof(agenda),1,arq);
}
return 0;
}
void adiciona_contato()
{
char nome[20];
arq = fopen("banco.bin","a+b");
if (arq == NULL)
{
printf("Erro ao abrir arquivo\n");
return;
}
printf("\n\n");
printf("Digite o nome: ");
fflush(stdin);
gets(nome);
if (verifica(nome) == 1)
{
printf("\nNome ja existe.\n");
}
else
{
strcpy(contato.nome,nome);
printf("Digite o telefone: ");
scanf("%d", &contato.telefone);
fwrite(&contato,sizeof(agenda),1,arq);
}
fclose(arq);
}
void modifica()
{
char nome[20];
arq = fopen("banco.bin","r+b");
if (arq == NULL)
{
printf("Erro ao abrir arquivo\n");
return;
}
printf("\n\n");
printf("Digite nome do contato: ");
fflush(stdin);
gets(nome);
if (verifica(nome) == 1)
{
printf("\nDigite um novo nome: ");
fflush(stdin);
gets(nome);
strcpy(contato.nome,nome);
printf("\nDigite um novo numero de telefone: ");
scanf("%d", &contato.telefone);
fwrite(&contato,sizeof(agenda),1,arq);
}
else
{
printf("\nNome nao existe.\n");
}
fclose(arq);
}
void remove_contato()
{
char nome[20];
FILE *tmp;
arq = fopen("banco.bin","r+b");
if (arq == NULL)
{
printf("Erro ao abrir arquivo\n");
return;
}
tmp = fopen("banco.txt","a+b");
printf("\n\n");
printf("Digite nome do contato: ");
fflush(stdin);
gets(nome);
fread(&contato,sizeof(agenda),1,arq);
while (!feof(arq))
{
if (strcmp(contato.nome,nome) != 0)
{
fwrite(&contato,sizeof(agenda),1,tmp);
}
fread(&contato,sizeof(agenda),1,arq);
}
fclose(arq);
fclose(tmp);
system("del banco.bin");
system("ren banco.txt banco.bin");
}
void procura_nome()
{
char nome[20];
arq = fopen("banco.bin","r+b");
if (arq == NULL)
{
printf("Erro ao abrir arquivo\n");
return;
}
printf("\n\n");
printf("Digite o nome: ");
fflush(stdin);
gets(nome);
if (verifica(nome) == 1)
{
fread(&contato,sizeof(agenda),1,arq);
printf("\n\n");
printf("----------------------------------------\n");
printf("CONTATOS | TELEFONE \n");
printf("----------------------------------------\n");
printf("%-20s %8d\n", contato.nome,contato.telefone);
printf("----------------------------------------\n");
}
else
{
printf("\nContato nao existe.\n");
}
fclose(arq);
}
void procura_num()
{
int num;
arq = fopen("banco.bin","r+b");
if (arq == NULL)
{
printf("Erro ao abrir arquivo\n");
return;
}
printf("\n\n");
printf("Digite o telefone: ");
scanf("%d", &num);
if (verifica_num(num) == 1)
{
fread(&contato,sizeof(agenda),1,arq);
printf("\n\n");
printf("----------------------------------------\n");
printf("CONTATOS | TELEFONE \n");
printf("----------------------------------------\n");
printf("%-20s %8d\n", contato.nome,contato.telefone);
printf("----------------------------------------\n");
}
else
{
printf("\nContato nao existe.\n");
}
fclose(arq);
}
void mostrar_lista()
{
arq = fopen("banco.bin","r+b");
if (arq == NULL)
{
printf("Erro ao abrir arquivo\n");
return;
}
printf("\n\n");
printf("----------------------------------------\n");
printf("CONTATOS | TELEFONE \n");
printf("----------------------------------------\n");
fread(&contato,sizeof(agenda),1,arq);
while (!feof(arq))
{
printf("%-20s %8d\n", contato.nome,contato.telefone);
fread(&contato,sizeof(agenda),1,arq);
}
printf("----------------------------------------\n");
fclose(arq);
}
int main()
{
char op;
do
{
op = menu();
switch(op)
{
case '1': adiciona_contato(); break;
case '2': mostra_lista(); break;
case '3': procura_nome(); break;
case '4': procura_num(); break;
case '5': modificar(); break;
case '6': remove_contato(); break;
}
printf("\n");
system("PAUSE");
}while (op != '0');
return 0;
}
Para escrever sua resposta aqui, entre ou crie uma conta.
Compartilhar