3

我有这个结构

typedef struct no
{
    char command[MAX_COMMAND_LINE_SIZE];
    struct no * prox;
} lista;

lista *listaCommand = NULL;

我正在用一个似乎可以正常工作的简单函数填充 listaCommand,因为我可以毫无问题地读取值,但是如果我尝试比较,比如

strcmp(listaCommand->prox>command, ">")

我只是得到一个分段错误,即使值 > 存在,为什么会发生这种情况?

4

3 回答 3

10
strcmp(listaCommand->prox>command, ">") 

应该

strcmp(listaCommand->prox->command, ">")


在您的代码listaCommand->prox>command中将被视为比较操作,使用>运算符。C 中的比较返回一个整数,如果为 false,则返回 0,否则返回非零。它很有可能会返回0,这不是有效的内存地址。因此,分段错误。

于 2013-05-24T07:26:00.747 回答
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;
}
于 2013-05-24T10:59:46.623 回答
0

改变

strcmp(listaCommand->prox>command, ">")

strcmp(listaCommand->prox->command, ">")
于 2013-05-24T07:26:52.137 回答