2013-04-21 55 views
3

出於某種原因,我在此行得到一個錯誤:指針轉換錯誤不兼容的整數?

while ((en = strtok(NULL, " ") !=NULL)){ //do something } 

並且在該行(對於這一個錯誤爲int」和‘無效*’)「指針和整數(之間的比較」 ,即使inputString是一個字符數組,空爲空。

while (!inputString[i]==NULL) 

連接是一個char,而被宣佈爲char *恩,我不知道爲什麼?是不是因爲我不能比較他們與NULL?

回答

13

問題不是比較 - 這是分配!==更高的優先級,讓你的表達被解析爲:

en = (strtok(NULL, "") != NULL) 

想必en爲指針類型,和!=結果是int,所以這是在警告出現。您可能的意思是:

(en = strtok(NULL, "")) != NULL 

作爲條件。在第二個示例中也是如此 - !優先於==,因此您將!inputString[i](其類型爲int)與NULL(其類型爲void *)的結果進行比較。您可能意味着:

while (!(inputString[i] == NULL)) 

這也可以寫成:

while (inputString[i] != NULL) 

或只是

while (inputString[i]) 
相關問題