Ir ao conteúdo
  • Cadastre-se

C Cadastro e pesquisa de pessoas em C


LucasSaitama

Posts recomendados

Boa noite pessoal, tudo bem? Então, tenho um probleminha com meu código, o objetivo dele é cadastrar pessoas e armazenar os nomes em uma array, dai quando eu terminar de cadastrar, eu posso ter a opção de pesquisar os nomes novamente e verificar se eles estão no "banco de dados" digamos assim. Ele está funcionando em partes, pois quando cadastro os nomes, e retorno ao menu inicial, as vezes ele salva o nome e encontra todos os nomes que digitei, porém, quando peço para pesquisar outro nome, ou voltar ao menu inicial, registrar outro nome e pesquisar novamente, ele perde alguns nomes que cadastrei anteriormente, fica meio confuso de entender falando, então vou mandar o código para vocês verem como eu estruturei isso tudo, não tenho conhecimentos avançados em C, comecei a estudar faz 3 dias, então peço perdão pelos erros e pela falta de noção de indentação do código, não estou acostumado com ele ainda hehe.
 

 

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


int choice,yn;
int num;
int i;
int cont;
char nomes[10][100];
char name[50];
char voider;


int main(){



void menu(void);

menu();

return 0;

}



void menu(void){

void cadastro(void);
void pesquisa(void);

printf("\n/----------------------------------------------------------------------/");
printf("\n/----------------------------------------------------------------------/");
printf("\n/-----------------------G A T H E R E R V2.0 --------------------------/");
printf("\n/----------------------------------------------------------------------/");
printf("\n/----------------------------------------------------------------------/");
printf("\n\nPress enter to continue...");
gets(&voider);


system("cls");

printf("\n/----------------------------------------------------------------------/");
printf("\n/-----------------------M A I N   M E N U -----------------------------/");
printf("\n/----------------------------------------------------------------------/");
printf("\n/----------------------------------------------------------------------/");
printf("\n/---1 - REGISTER PEOPLE ===============================================/");
printf("\n/---2 - SEARCH PEOPLE =================================================/");
printf("\n/----------------------------------------------------------------------/");
printf("\n/----------------------------------------------------------------------/");
printf("\n/---Select a option----------------------------------------------------/\n");
scanf("%d",&choice);
fflush(stdin);

switch (choice){

  case 1:

  system("cls");
  cadastro();
break;

  case 2:

  system("cls");
  pesquisa();
  break;

}
}



void cadastro(void){
  void menu(void);

int g;
g = 0;

i = 0;

  while(g == 0){


  printf("\n/----------------------------------------------------------------------/");
  printf("\n/---------------------------REGISTER PEOPLE----------------------------/");
  printf("\n/----------------------------------------------------------------------/");
  printf("\n/----------------------------------------------------------------------/");
  printf("\n/--------- Enter with the person's name: ------------------------------/\n");
  scanf("%s",nomes[i]);
  fflush(stdin);
      i = i + 1;
  system ("cls");
  printf("\n/----------------------------------------------------------------------/");
  printf("\n/---------------------------REGISTER PEOPLE----------------------------/");
  printf("\n/----------------------------------------------------------------------/");
  printf("\n/----------------------------------------------------------------------/");
  printf("\n/--------- Do you want to register another person?: -------------------/");
  printf("\n/'Y = 1' 'N = 2'-------------------------------------------------------/\n");
  scanf("%d",&yn);

  if(yn == 1){
   system("cls");
  }
  else{

 menu();


  }
}
}


void pesquisa(void){

  void menu(void);
int g;
g = 0;
i = 0;
  while(g == 0){



  printf("\n/----------------------------------------------------------------------/");
  printf("\n/---------------------------SEARCH PEOPLE -----------------------------/");
  printf("\n/----------------------------------------------------------------------/");
  printf("\n/----------------------------------------------------------------------/");
  printf("\n/--------- Enter the name to search in database: ----------------------/\n");
  fflush(stdin);
  gets(name);

  if(strcmp(nomes[i],name) == 0){

system("cls");
    printf("\n/----------------------------------------------------------------------/");
    printf("\n/---------------------------SEARCH PEOPLE -----------------------------/");
    printf("\n/----------------------------------------------------------------------/");
    printf("\n/----------------------------------------------------------------------/");
    printf("\n/---------The following name has been found: %s                         ",nomes[i]);
    i = i + 1;
}
else{
    printf("\n/---------No name has been found in database --------------------------/");
  }
    printf("\n/---------Do you want to try another search? --------------------------/");
    printf("\n/'Y = 1' 'N = 2'-------------------------------------------------------/\n");
    scanf("%d",&yn);
    if(yn == 1){
     system("cls");
    }
    else{

   menu();



 }
 }
}

 

Link para o comentário
Compartilhar em outros sites

Do jeito que está, seu programa está armazenando os números sempre nas mesmas posições. você tem que criar um variável para armazenar quantos nomes já foram entrados e ir adicionando sem reescrever os que já foram entrados.

int index=0; //variável global 
(...)
void cadastro(void){
 // void menu(void);
 menu(); //para chamar o metodo, basta assim

int g;
g = 0;

while(g == 0){
(..)
if (index < 10) //só armazena 10 nomes
{               
  scanf("%s",nomes[index]);
  fflush(stdin);
  index = index + 1;
}
  

 

Link para o comentário
Compartilhar em outros sites

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!