我目前正在为一个大学工作制作一个项目,在这样做时我遇到了这个错误,我不知道是什么导致它。
它指向的行是:if ((*compara)(ptr->dados, valor))
功能:
void * pesquisar(PNO cabeca, int (*compara)(), void* valor) {
PNO ptr;
for (ptr = cabeca; ptr; ptr = ptr->prox);
if ((*compara)(ptr->dados, valor))
return ptr->dados;
return NULL;
}
结构
struct no{
struct no*prox;
struct no*ant;
void *dados;
};
typedef struct no NO;
typedef NO*PNO;
typedef NO**PPNO;
struct cliente{
int ID_cliente;
char nome[60];
char morada[255];
int contribuinte;
struct cliente * prox;
};
typedef struct cliente CLIENTE;
typedef CLIENTE*PCLIENTE;
CLIENTE *cabCliente, *cauCliente;
主要:
PNO Cliente = NULL, Fatura = NULL;
PCLIENTE pesquisa;
char n;
void * Dados;
int opcao;
char nome[60];
case 3:
printf("Insira o Nome: ");
fgets(nome, 60, stdin);
nome[strlen(nome) - 1] = '\0';
pesquisa = pesquisar(Cliente, cmpNomeCliente, nome);
if (pesquisa) printf("Nome é: %s", nome);
else printf("Aluno inexistente");
getch();
break;
答案 0 :(得分:1)
for (ptr = cabeca; ptr; ptr = ptr->prox);
if ((*compara)(ptr->dados, valor))
在这段代码中,第二行中的ptr
将始终为NULL,因为for
循环一直运行,直到ptr
表达式为false且由于;
在for
之后,循环没有正文。