我有这个结构
typedef struct no
{
char command[MAX_COMMAND_LINE_SIZE];
struct no * prox;
} lista;
lista *listaCommand = NULL;
我正在用一个似乎工作正常的简单函数填充listaCommand,因为我可以毫无问题地读取值,但如果我尝试比较,比如
strcmp(listaCommand->prox>command, ">")
我只是得到一个分段错误,即使值> gt;在那里,为什么会这样?
答案 0 :(得分:10)
strcmp(listaCommand->prox>command, ">")
应该是
strcmp(listaCommand->prox->command, ">")
在您的代码中listaCommand->prox>command
将被视为比较操作,使用>
运算符。 C中的比较返回整数,如果为false,则返回0,否则返回非零。它很有可能返回0
,这不是有效的内存地址。因此,分段错误。
答案 1 :(得分:0)
更改
strcmp(listaCommand->prox>command, ">")
到
strcmp(listaCommand->prox->command, ">")
答案 2 :(得分:0)
分配记忆!!!
typedef struct no
{
char str[20];
struct no * prox;
} lista;
lista *listaCommand = NULL;
int main(int argc, char** argv)
{
listaCommand = malloc(sizeof(lista));
listaCommand->prox = malloc(sizeof(lista));
strcpy(listaCommand->prox->str, "aaa");
printf("%d\n", strcmp(listaCommand->prox->str, ">>"));
free(listaCommand->prox);
free(listaCommand);
return 0;
}