出于某种原因,我在这一行收到错误:
while ((en = strtok(NULL, " " ) !=NULL)){ //do something }
并且在这一行(这一行的错误是'指针与整数之间的比较('int'和'void *'),即使inputString是一个char数组且null为null。
while (!inputString[i]==NULL)
en是一个char,并被声明为char * en。我不确定为什么......是因为我无法将它们与NULL进行比较?
答案 0 :(得分:13)
问题不在于比较 - 这是作业。 !=
的优先级高于=
,因此您的表达式被解析为:
en = (strtok(NULL, "") != NULL)
大概en
是指针类型,!=
的结果是int
,因此警告就出现了。你可能意味着:
(en = strtok(NULL, "")) != NULL
作为条件。在第二个示例中也是如此 - !
的优先级高于==
,因此您要将!inputString[i]
(其类型为int
)的结果与{NULL
进行比较1}}(可能有类型void *
)。你可能意味着:
while (!(inputString[i] == NULL))
也可以写成:
while (inputString[i] != NULL)
或只是
while (inputString[i])