Ir ao conteúdo
  • Cadastre-se

Problema com string


fdsmello

Posts recomendados

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);        }    }} 
Link para o comentário
Compartilhar em outros sites

@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.

Link para o comentário
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;        }    }} 
Link para o comentário
Compartilhar em outros sites

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

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...