Ir ao conteúdo

Posts recomendados

Postado

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
Postado

@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

Crie uma conta ou entre para comentar

Você precisa ser um usuário 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 comunidades 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

×
×
  • Criar novo...

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!