1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

listas - procurar por array de caracteres

Discussão em 'Programação' iniciada por anthead, 5 de Maio de 2009. (Respostas: 2; Visualizações: 640)

  1. anthead

    anthead Power Member

    boas, tenho definida uma estrutura de livros com varios campos nomeadamente o "autor" - autor do livro, cujo é um array de caracteres... e tenho a seguinte funcao:
    Código:
    void procurar_livro_au()
    {
        char au[100];
        livros *livro_pr = n_livros;
        
        //getchar();
        system("clear");
        printf("Introduza o Autor do livro:");
        fgets(au, sizeof(au), stdin);
        au[strlen(au)-1] = '\0';
        
        while(livro_pr != NULL && strcmp(livro_pr->autor,au) == 0){
                printf("\nCodigo:%d",livro_pr->codigol);
                printf("\nTítulo:%s",livro_pr->titulo);
                printf("\nCompartimento:%s",livro_pr->compartimento);
                printf("\nAutor:%s",livro_pr->autor);
                printf("\nReserva:%s",livro_pr->reserva);
                livro_pr = livro_pr->next;
        }
        printf("\n\nFim de listagem!!\n");
        fflush(stdin);
    }
     
    a ideia é procurar na lista, todos os livros do autor que os escreveu que nos prentendemos pesquisar ( por exemplo Luis Damas )... na verdade a funcao n me esta a fazer o que devia!! se alguem puder ajudar agradecia!

    cumprimentos,
     
    Última edição pelo moderador: 6 de Maio de 2009
  2. Baderous

    Baderous Banido

    Tenho a impressão que o problema é na condição do while. Ao colocares o && estás a dizer que a lista, logo no início, tem de ser não vazia e que o 1º livro tem de ser do autor em questão. Como se calhar não é, a condição falha e nunca entras no while. Retira essa condição (a do strcmp) do while e coloca-a dentro do mesmo, num if.
     
  3. anthead

    anthead Power Member

    n tinha pensado nessa situação...mas entendi!! tb ja tinha experimentado com o if... mas n coloquei a condição livro_pr = livro_pr->next; fora do while! e era por isso que n estava a dar!!
    Mas ja funciona!!

    obrigado,

    cumprimentos,
     

Partilhar esta Página