listas - procurar por array de caracteres

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:
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.
 
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,
 
Back
Topo