Ir ao conteúdo
  • Comunicados

    • Gabriel Torres

      Seja um moderador do Clube do Hardware!   12-02-2016

      Prezados membros do Clube do Hardware, Está aberto o processo de seleção de novos moderadores para diversos setores ou áreas do Clube do Hardware. Os requisitos são:   Pelo menos 500 posts e um ano de cadastro; Boa frequência de participação; Ser respeitoso, cordial e educado com os demais membros; Ter bom nível de português; Ter razoável conhecimento da área em que pretende atuar; Saber trabalhar em equipe (com os moderadores, coordenadores e administradores).   Os interessados deverão enviar uma mensagem privada para o usuário @Equipe Clube do Hardware com o título "Candidato a moderador". A mensagem deverá conter respostas às perguntas abaixo:   Qual o seu nome completo? Qual sua data de nascimento? Qual sua formação/profissão? Já atuou como moderador em algo outro fórum, se sim, qual? De forma sucinta, explique o porquê de querer ser moderador do fórum e conte-nos um pouco sobre você.   OBS: Não se trata de função remunerada. Todos que fazem parte do staff são voluntários.
    • DiF

      Poste seus códigos corretamente!   21-05-2016

      Prezados membros do Fórum do Clube do Hardware, O Fórum oferece um recurso chamado CODE, onde o ícone no painel do editor é  <>     O uso deste recurso é  imprescindível para uma melhor leitura, manter a organização, diferenciar de texto comum e principalmente evitar que os compiladores e IDEs acusem erro ao colar um código copiado daqui. Portanto convido-lhes para ler as instruções de como usar este recurso CODE neste tópico:  
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
Postado (editado)

@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;
}

 

Editado por devair1010
  • Obrigado 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

@devair1010 Muito obrigado, me ajudou muito. E obrigado por explicar.

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






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

×