2012-03-13 154 views
1

Hello noob程序員在這裏遇到了strcmp問題,這是我的代碼。從'char'到'const char *'的C++ strcmp轉換

while (strcmp("m",wood) !=0 || strcmp("j",wood) !=0 || strcmp("o",wood) !=0){ 
    cout << "(m for mahogany, o for oak, or p for pine): "; 
cin >> wood; 
} 

這是我的錯誤。

  • dining.cpp:在成員函數 '無效DiningSet :: woodType()':
  • dining.cpp:76:24:錯誤:從 '字符' 無效轉換到 '爲const char *'[ - fpermissive] /usr/include/string.h:143:12:error:初始化參數2'int strcmp(const char *,const char *)'[-fpermissive]
  • dining.cpp:76:48:錯誤:從'char'到'const char *'無效轉換[-fpermissive] /usr/include/string.h:143:12:錯誤:初始化參數2'int strcmp(const char *,const char *) '[-fpermissive]
  • dining.cpp:76:72:錯誤:從'char'無效轉換爲'const char *'[-fpermissive] /usr/include/string.h:143:12:錯誤:初始化參數2'int strcmp (常量字符*,常量字符*)」 [-fpermissive]
+0

的''||應該是''&& – xanatos 2012-03-13 11:05:24

+4

如果要比較兩個'char'just使用''==或'!=',如果你想比較兩個字符串('char *')然後使用'strcmp'。將單個字符與字符串進行比較沒有任何意義,這正是您所看到的。 – 2012-03-13 11:05:27

+0

什麼是木材的數據類型.. ?? – 2012-03-13 11:05:34

回答

11

woodchar類型的:它必須是一個字符串,即char*,在strcmp()使用。

更改爲:

while ('m' != wood && 'j' != wood && 'o' != wood) 
+0

木是char類型的 – 2012-03-13 11:09:01

+0

這個答案是正確的,@Daniel D C,加上我的評論在Q下說的更好的理解。 – 2012-03-13 11:09:35

+0

@DanielDC我想看看[char和字符串文字](http://publib.boulder.ibm.com/infocenter/macxhelp/v6v81/index.jsp?topic=%2Fcom.ibm.vacpp6m.doc%2Flanguage %2Fref%2Fclrc02ccon.htm)此外太答案:) – 2012-03-13 11:11:57

0

錯誤顯示了第二個參數的問題。它應該是一個const char *

strcmp的簽名是:

int strcmp (const char * str1, const char * str2);