Ir para conteúdo

POWERED BY:

Arquivado

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

Gustavo Stehling

Busca em Lista encadeada C

Recommended Posts

[Error] invalid conversion from 'char' to 'const char*' [-fpermissive]

[Error] initializing argument 2 of 'int strcmp(const char*, const char*)' [-fpermissive]

 

 

O que quero é buscar um livro pelo nome do autor, no caso o strcmp me daria 0, caso existisse, e algo diferente de 0 caso não existisse.

Ai no main eu colocaria as condições de impressão se existia ou não aquele autor na biblioteca.

Só que não consigo implementar essa função pelos erros que aponta o gcc.

Alguém pode sugerir alguma outra maneira de fazer?

Lista *buscastringautor (Lista *l, char autorbuscado, int numaux)
{
    Lista* h;
    for (h=l; h!=NULL; h=h->prox)
    numaux = strcmp ( h->autor, autorbuscado);
        if (numaux == 0)
            return h;
    return NULL;
}
	case 2:
		char buscaautor[100];
		printf ("Informe o nome do autor que deseja ser buscado");
		scanf ("%s", &buscaautor[100]);
		l=	buscastringautor (l, buscaautor);

Compartilhar este post


Link para o post
Compartilhar em outros sites

Primeiro:

Lista *buscastringautor (Lista *l, char autorbuscado, int numaux)
{
  Lista* h;
  for (h=l; h!=NULL; h=h->prox)
    numaux = strcmp ( h->autor, autorbuscado);
  if (numaux == 0)
    return h;
  return NULL;
} 

A função strcmp pede dois ponteiro pra char, um const e o outro não.

 

Então sua função deveria ser:

Lista *buscastringautor (Lista *l, const char *autobuscado, int numaux)

Segundo:

scanf ("%s", &buscaautor[100]) 

A partir do segundo argumento da função scanf, vc deve passar o endereço para a variável que irá receber os dados digitados pelo usuário. Quando vc declara array no C, o nome deste array sem o operador subscrito já contém o endereço do primeiro elemento, ou seja, é um ponteiro const para o primeiro elemento.

 

Sendo assim, vc pode usar:

scanf ("%s", buscaautor) // ou scanf ("%s", &buscaautor[0])

E Terceiro:

l=	buscastringautor (l, buscaautor);

Vc não deveria passar três argumentos aí não???

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.