2012-03-13 24 views
1

こんにちは、プログラマーはプログラマーでstrcmpに問題があります。これは私のコードです。C++ strcmpの 'char'から 'const char *'への変換

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 *' に '文字' から無効な変換[ - (const char *、const char *)[-fpermissive]
  • dining.cpp:76:48:エラー:初期化引数2の 'int strcmp(const char *、const char *エラー: 'char'から 'const char *'への無効な変換[-fpermissive] /usr/include/string.h:143:12:エラー: 'int strcmp(const char *、const char *) '[ - 受精]
  • dining.cpp:76:72:error: 'char'から 'const char *'への無効な変換 /usr/include/string.h:143:12:エラー: 'int strcmpの引数2を初期化していますstrcmp()で使用される、それが文字列でなければならない、すなわち、char*:(CONSTのchar *、CONSTのchar *)が」[-fpermissive]
+0

あなたは2 'char'justの使用を'比較したい場合は、 '||' '==' && ' – xanatos

+4

次のようになります。それはstrcmpの署名があるconst char *

である必要があります2つの文字列( 'char *')を比較したい場合は 'strcmp'を使います。 1文字と文字列を比較するのは意味がありません。これはあなたがしているようなものです。 –

+0

木材のデータ型は何ですか? –

答えて

11

woodcharです。

変更:

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

木材はタイプ –

+0

ですこの回答は正しいです、@ダニエルD C、私のコメントがQの下でより理解のために言うとそれに加えてください。 –

+0

@DanielDC私は[charとstringリテラル](http://publib.boulder.ibm.com/infocenter/macxhelp/v6v81/index.jsp?topic=%2Fcom.ibm.vacpp6m.doc%2Flanguage %2Fref%2Fclrc02ccon.htm)さらに答え: –

0

誤差は第二引数に問題があることを示しています。

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

関連する問題