Ir ao conteúdo
  • Cadastre-se
Fabio217

C Contador em agenda de contatos.

Recommended Posts

Eia galera, preciso de uma ajuda de vcs numa parada que não estou conseguindo descobrir qual o erro, to fazendo a agenda que vai estar ai embaixo, as funções que ela precisa ter é inserir,pesquisar e listar que estão funcionando. A única coisa que não consigo descobrir é como colocar um contador para uma quantidade máxima de registros digamos que seja 5 por exemplo, já coloque um if com um contatdor só que quando passa os 5 o else que seria um printf escrito agenda cheia sisplemente não aparece. Ai não sei mais o que fazer, se vcs tiverem uma ideia dica para ajudar, agradeço.

 

#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <string.h>

	struct registro
{
    char n[50];
    int idade;
    char telefone[50];
    char email[50];
};
	struct registro contato;
	FILE *arq;
  
void inserir(){
	
	arq = fopen("Agenda.txt","ab");
	if(arq==NULL)
    {
        printf("Erro na abertura do arquivo");
        system("pause");
    }
    	system("cls");
   		printf("\n Nome: ");
    	fflush(stdin);
        gets(contato.n);
        printf("\n Idade : ");
        scanf("%d", &contato.idade);
        printf("\n Telefone :");
        fflush(stdin);
        gets(contato.telefone);
        printf("\n E-Mail : ");
        fflush(stdin);
        gets(contato.email);
       	fwrite(&contato,sizeof(registro),1,arq);
       	
	fclose(arq);
      
}

void pesquisar()
{
    char pesquisa[50];
    int p=0;
	system("cls");
    arq = fopen("Agenda.txt","rb");
	if(arq==NULL)
    {
    printf("Erro na abertura do arquivo");
    system("pause");
    }
    else
    {
    	printf("\n Digite o nome a ser pesquisado: ");
    	scanf("%s",&pesquisa);
    	
      	printf("\n**************************************************\n");
      		while (fread(&contato, sizeof(registro), 1, arq))
				if (strcmp(pesquisa,contato.n )==0)
				{
				printf("\n Nome: %s",contato.n);
				printf("\n Idade : %d",contato.idade);
				printf("\n Telefone : %s",contato.telefone);
				printf("\n E-Mail : %s\n",contato.email);
				p=1;
        		}
			if(p==0)
                printf("\nNome nao encontrado!\n\n");
    printf("\n");
    fclose(arq);
    system("pause");
}
}


void listar(){
	
	system("cls");
    arq = fopen("Agenda.txt","rb");
    if(arq==NULL)
    {
    printf("Erro na abertura do arquivo");
    system("pause");
    }
    
	while(fread(&contato,sizeof(registro),1,arq)==1)
	{
	printf("\n=========================================\n");
	printf("\n Nome: %s",contato.n);
	printf("\n Idade : %d",contato.idade);
	printf("\n Telefone : %s",contato.telefone);
	printf("\n E-Mail : %s\n",contato.email);
	}
	printf("\n");
    fclose(arq);
    system("pause");
}

int main()
{
	int op;
    do
    {
    system("cls");
   	printf("\n      AGENDA ELETRONICA \n");
    printf("\n [1] - Adicionar");
    printf("\n [2] - Pesquisar");
    printf("\n [3] - Exibir");
	printf("\n [0] - Sair\n\n");
	printf(" Opcao: ");
    scanf("%d", &op);
	    switch(op)
        {
            case 1:
				inserir();	
            break;
            
            case 2:
                pesquisar();
            break;
            case 3:
                listar();
            break;
            case 0:
                printf("\nFechado Agenda.....\n");
            break;
            default:
                printf("Opção Invalida");
                break;
        }
}while(op!=0);
	fclose(arq);
}

 

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Fabio217       no seu código na hora de inserir os contatos não tem nenhum if limitando a quantidade de cadastro ,   e se você colocar um contador  ele dará certo sim ,  então coloque o contador como sendo uma variável global , assim ela poderá ser acessada de qualquer parte do programa , e a cada cadastro incremente esse contador ,  mas creio que esse modo de arquivo trará dificuldade se por exemplo você quiser deletar um contato ,  então seria melhor usar vetores para armazenar os dados da agenda e desse modo você pode inserir os contatos e pesquisar os contatos e também listar os contatos e no caso de você quiser deletar um contato , e depois de usar a agenda e for sair dela coloque uma função que arquive os dados .

então seu código ficaria assim :

#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <string.h>
int contador;
	struct registro
{
    char n[50];
    int idade;
    char telefone[50];
    char email[50];
};
	struct registro contato;
	FILE *arq;

void inserir(){
    arq = fopen("Agenda.txt","ab");
	if(arq==NULL){
        printf("Erro na abertura do arquivo");
        system("pause");
    }
    if(contador<3){
    	system("cls");
   		printf("\n Nome: ");
    	fflush(stdin);
        gets(contato.n);
        printf("\n Idade : ");
        scanf("%d", &contato.idade);
        printf("\n Telefone :");
        fflush(stdin);
        gets(contato.telefone);
        printf("\n E-Mail : ");
        fflush(stdin);
        gets(contato.email);
       	fwrite(&contato,sizeof(contato),1,arq);
       	contador++;
    }
    else{
        printf("Agenda Cheia .\n");
        system("pause");
    }
	fclose(arq);

}

void pesquisar()
{
    char pesquisa[50];
    int p=0;
	system("cls");
    arq = fopen("Agenda.txt","rb");
	if(arq==NULL)
    {
    printf("Erro na abertura do arquivo");
    system("pause");
    }
    else
    {
    	printf("\n Digite o nome a ser pesquisado: ");
    	scanf("%s",pesquisa);

      	printf("\n**************************************************\n");
      		while (fread(&contato, sizeof(contato), 1, arq))
				if (strcmp(pesquisa,contato.n )==0)
				{
				printf("\n Nome: %s",contato.n);
				printf("\n Idade : %d",contato.idade);
				printf("\n Telefone : %s",contato.telefone);
				printf("\n E-Mail : %s\n",contato.email);
				p=1;
        		}
			if(p==0)
                printf("\nNome nao encontrado!\n\n");
    printf("\n");
    fclose(arq);
    system("pause");
}
}


void listar(){

	system("cls");
    arq = fopen("Agenda.txt","rb");
    if(arq==NULL)
    {
    printf("Erro na abertura do arquivo");
    system("pause");
    }

	while(fread(&contato,sizeof(contato),1,arq)==1)
	{
        printf("\n=========================================\n");
        printf("\n Nome ----- : %s",contato.n);
        printf("\n Idade ---- : %d",contato.idade);
        printf("\n Telefone - : %s",contato.telefone);
        printf("\n E-Mail --- : %s\n",contato.email);
	}
    fclose(arq);
    system("pause");
}

int main(){
	int op;
    do{
        system("cls");
        printf("\n      AGENDA ELETRONICA \n");
        printf("\n [1] - Adicionar");
        printf("\n [2] - Pesquisar");
        printf("\n [3] - Exibir");
        printf("\n [0] - Sair\n\n");
        printf(" Opcao: ");
        scanf("%d", &op);
        switch(op){
        case 1:
            inserir();
            break;
        case 2:
            pesquisar();
            break;
        case 3:
            listar();
            break;
        case 0:
            printf("\nFechando Agenda.....!\n");
            break;
        default:
            printf("Opção Invalida");
            break;
        }
    }while(op!=0);
    return 0;
}

 

  • Obrigado 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×