Hola buenas, estoy haciendo una función que busca autores en una lista. Tengo la función que adjunto abajo, y no ese como comparar cada elemento de la lista con autor. Si alguien puede echarme una mano se lo agradeceria. Muchas gracias.
int BuscarAutor(LISTA *l, char *autor)
{
NODO *aux=lista->primero;
int i=0;
int cuenta=0;
if(aux==NULL)
{
return NULL;
}
else
{
do {
if(strcmp(aux,autor)==0)
{
cuenta++;
}
aux=aux->siguiente;
}while(aux!=NULL);
printf("Numero: %i\n",cuenta);
return NULL;
}
}
En el strcmp, tendrás que poner aux->autor, o aux-> el dato que sea, no sé como se llama el campo de la estructura.
Si pongo aux->autor me entra solo una vez, aunque haya varios.
Podrías mostrar como es LISTA y NODO. Los puedo intuir pero para estar seguro mejor verlo.
En la función no usas la LISTA que le has pasado pues esta la has llamado l y tú te refieres a ella como lista.
Devuelves NULL a un tipo de dato int. Debes devolver 0 o un valor negativo si la función hs fallado (una convención bastante extendida), pero no NULL.
Lo de aux->autor solo en strcmp, que es donde lo necesitas.
en tu comparacion no estas usando el campo del dato a comparar, sino estas usando el aux y el aux es un nodo (TDA) mas no una variable. te recomiendo que uses compareto.
Salu2