Ir ao conteúdo
  • Cadastre-se
fdsmello

Problema com string

Recommended Posts

Boa noite, estou com uma dificuldade em strings nesse código aqui.

Na parte de comparar uma string com a outra para vê se são iguais.

Na função ProcurarCPF que não mostra se acho um cpf igual.

 

[noparse][code/* 1) Desenvolva um programa em C que controle uma lista que armazena informações de pessoas

(Nome, CPF, RG) para, no máximo, 200 registros . Esse programa deve ser capaz de controlar a
inserção, exclusão, apresentação de todos os registros válidos, alteração da informação de um
registro e busca de um registro a partir do número do CPF. */
 
#include <stdio.h>#include <string.h>#define  QNT_REGISTROS 200void InserirRegistro(void);void ApresentarRegistros(void);void ProcuraPorCPF(void);struct pessoa{    char nome [51];    char cpf [12];    char Rg [11];};struct pessoa listaPessoas[QNT_REGISTROS];int inicioLista=0;int fimLista =0;int main(){    int opcao =0;    while (opcao !='0')    {        system ("cls");        opcao=MenuPrincipal();        switch(opcao)        {            case '1':InserirRegistro();                break;            case '2':ApresentarRegistros();                break;            case '3':ProcuraPorCPF();                break;            case '0':printf("\nSaindo programa");                break;        }    }}int MenuPrincipal(){    printf("\n=================================");    printf("\n          MENU");    printf("\n=================================");    printf("\n[1] - Inserir Registro");    printf("\n[2] - Apresentar Registros");    printf("\n[3] - Procurar por CPF");    printf("\n[0] - Para Sair \n\n");    return(getche());}void InserirRegistro(){    printf("\nDigite o nome da pessoa \n");    scanf("%[^\n]",listaPessoas[fimLista].nome);    fflush(stdin);    printf("\nDigite o cpf da pessoa \n");    scanf("%[^\n]",listaPessoas[fimLista].cpf);    fflush(stdin);    printf("\nDigite o RG da pessoa \n");    scanf("%[^\n]",listaPessoas[fimLista].Rg);    fflush(stdin);    fimLista++;    printf("Dados inseridos com sucesso");}void ApresentarRegistros(){    int indLinha = inicioLista;    printf("\n-----------------------------------------------------------------------\n");    printf("\nNOME\t\tCPF\tRG\n");    printf("-------------------------------------------------------------------------\n");    for(indLinha;indLinha<fimLista;indLinha++)    {        printf("%s\t\t%s\t%s\n",listaPessoas[indLinha].nome,listaPessoas[indLinha].cpf,listaPessoas[indLinha].Rg);    }    system ("pause");}void ExcluirPosicao (){   int posicaoExluir = -1;   printf("Digite a posicao que deseja exluir");   scanf("%d",posicaoExluir);   fflush(stdin);   if ((posicaoExluir >= inicioLista)&&(posicaoExluir<fimLista))   {     if (posicaoExluir == fimLista)     {        fimLista--;     }   }}void ProcuraPorCPF()  // ele não mostra se é igual ou não esse trecho que estou com duvida {    char cpfProcura[12];    int indLinha =0;    printf("Digite o CPF que deseja achar ");    scanf("%[^\n]",cpfProcura);    fflush(stdin);    for (indLinha=0;indLinha<fimLista;indLinha++);    {    if (strcmp(cpfProcura,listaPessoas[indLinha].cpf))        {         printf("%s\t\t%s\t\t%s\n",listaPessoas[indLinha].nome,listaPessoas[indLinha].cpf,listaPessoas[indLinha].Rg);        }    }} 

Compartilhar este post


Link para o post
Compartilhar em outros sites
Visitante

@fdsmello

 

 

Você colocou Ponto e vírgula ( ; ) depois do for em ProcuraPorCPF().

for (indLinha=0;indLinha<fimLista;indLinha++); //...

Segue o código, que imprime na tela se não existe o cpf.

void ProcuraPorCPF()  {    char cpfProcura[12];    int i, cont=0;    printf("Digite o CPF que deseja achar ");    scanf("%[^\n]",cpfProcura);    fflush(stdin);     for (i=0; i<fimLista; i++)    {        if (strcmp(cpfProcura,listaPessoas[i].cpf) == 0)        {            cont = 1; //flag            printf("%s\t\t%s\t\t%s\n",listaPessoas[i].nome,listaPessoas[i].cpf,listaPessoas[i].Rg);            break; //sai do laço        }    }        //imprime uma msg se cpf nao existe, enquanto cont for igual a 0    if (cont == 0)    {        printf("\nCpf nao existe.\n");    }        getche(); //pausa} 

obs: Não consigo programar se não usar nomes pequenos nas variáveis... rsrs, troquei o indLinha pelo i.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tive outra duvida.Pode parecer besta mas é porque estou começando a programar.Na minha função main eu quero tirar os códigos da que tem neça referente ao menu , porque o professor disse que no main só precisa esta as funções.Quero criar outra função que ultilize o menu e passe ela para o main .Passar de uma função para a outra.

 

/* 1) Desenvolva um programa em C que controle uma lista que armazena informações de pessoas

(Nome, CPF, RG) para, no máximo, 200 registros . Esse programa deve ser capaz de controlar a
inserção, exclusão, apresentação de todos os registros válidos, alteração da informação de um
registro e busca de um registro a partir do número do CPF. */
#include <stdio.h>#include <string.h>#define  QNT_REGISTROS 200void InserirRegistro(void);void ApresentarRegistros(void);void ProcuraPorCPF(void);void EscolhaMenu(void);struct pessoa{    char nome [51];    char cpf [12];    char Rg [11];};struct pessoa listaPessoas[QNT_REGISTROS];int inicioLista=0;int fimLista =0;int main()  // gostaria de tirara daqui do main e jogar na função escolha Menu  e retorna só a opção.Tipo assim acho que ficaria assim int main(Escolha Menu()) ou não sei se main(opção).{    int opcao =0;    while (opcao !='0')    {        system ("cls");        opcao=MenuPrincipal();        switch(opcao)        {            case '1':InserirRegistro();                break;            case '2':ApresentarRegistros();                break;            case '3':ProcuraPorCPF();                break;            case '0':printf("\nSaindo programa");                break;        }    }}int MenuPrincipal(){    printf("\n=================================");    printf("\n          MENU");    printf("\n=================================");    printf("\n[1] - Inserir Registro");    printf("\n[2] - Apresentar Registros");    printf("\n[3] - Procurar por CPF");    printf("\n[0] - Para Sair \n\n");    return(getche());}void InserirRegistro(){    printf("\nDigite o nome da pessoa \n");    scanf("%[^\n]",listaPessoas[fimLista].nome);    fflush(stdin);    printf("\nDigite o cpf da pessoa \n");    scanf("%[^\n]",listaPessoas[fimLista].cpf);    fflush(stdin);    printf("\nDigite o RG da pessoa \n");    scanf("%[^\n]",listaPessoas[fimLista].Rg);    fflush(stdin);    fimLista++;    printf("Dados inseridos com sucesso");}void ApresentarRegistros(){    int indLinha = inicioLista;    printf("\n-----------------------------------------------------------------------\n");    printf("\nNOME\t\tCPF\tRG\n");    printf("-------------------------------------------------------------------------\n");    for(indLinha;indLinha<fimLista;indLinha++)    {        printf("%s\t\t%s\t%s\n",listaPessoas[indLinha].nome,listaPessoas[indLinha].cpf,listaPessoas[indLinha].Rg);    }    system ("pause");}void ExcluirPosicao (){   int posicaoExluir = -1;   printf("Digite a posicao que deseja exluir");   scanf("%d",posicaoExluir);   fflush(stdin);   if ((posicaoExluir >= inicioLista)&&(posicaoExluir<fimLista))   {     if (posicaoExluir == fimLista)     {        fimLista--;     }   }}void ProcuraPorCPF(){    char cpfProcura[12];    int indLinha =0;    printf("Digite o CPF que deseja achar ");    scanf("%[^\n]",cpfProcura);    fflush(stdin);    for (indLinha=0;indLinha<fimLista;indLinha++)    {    if (!strcmp(cpfProcura,listaPessoas[indLinha].cpf))        {         printf("%s\t\t%s\t\t%s\n",listaPessoas[indLinha].nome,listaPessoas[indLinha].cpf,listaPessoas[indLinha].Rg);        }    }    system("pause");}void EscolhaMenu()  // gostaria de jogar aqui a escolha do menu e retor na para o main só a função a realizar só que não sei como .Acho que da pra entender o que eu quero fazer{ int opcao =0;    while (opcao !='0')    {        system ("cls");        opcao=MenuPrincipal();        switch(opcao)        {            case '1':InserirRegistro();                break;            case '2':ApresentarRegistros();                break;            case '3':ProcuraPorCPF();                break;            case '0':printf("\nSaindo programa");                break;        }    }} 

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

×