比较const char * vs char(无法比较使用strcmp)hangman游戏

时间:2015-03-06 11:36:07

标签: c++

int main(){

    char real_word[200];
    char entered_variable;
    int counter_1 = 0;
    int counter_2 = 0;

    cout << "Enter The Word (It will be hidden throughout the game) :  ";
    cin.getline(real_word, sizeof(real_word));
    cout << string(50, '\n'); // clear screen

    for (counter_1 = 0; counter_1 < strlen(real_word); counter_1++){
        cout << "_ ";
        // cout << endl << real_word[counter_1]; JUST a control line
    }
    for (counter_1 = 0; counter_1 < strlen(real_word); counter_1++){

        cout << endl << "Please enter the first letter: ";
        cin >> entered_variable;
        for (counter_2 = 0; counter_2 < strlen(real_word); counter_2++){
            if (strcmp(real_word[counter_1], entered_variable) == 0)
            {
                cout << entered_variable;
            }
            else
            {
                cout << "_ ";
            }
        }
    }
}

if (strcmp(real_word[counter_1], entered_variable) == 0)导致此错误:

Error   4   error C2664: 'int strcmp(const char *,const char *)' : cannot convert argument 1 from 'char' to 'const char *'  */

5 个答案:

答案 0 :(得分:0)

您不希望在此处使用strcmp,而是用于比较字符串。只需看看char是否匹配,例如:

if (real_word[counter_1] == entered_variable)

答案 1 :(得分:0)

strcmp是一个比较整个C风格字符串的函数。如果您想比较单个字符,只需使用==

if(real_word[counter_1] == entered_variable)

答案 2 :(得分:0)

strcmp比较字符串(零终止字符数组)而不是字符。虽然字符串只能由一个字符组成,但它们仍然是不同的类型(如包含一个整数的数组与单个整数变量不同)。

为了比较两个字符(单词和保护字符中的单个字符),只需使用==运算符:

if (real_word[counter_1] == entered_variable)

答案 3 :(得分:0)

问题是strcmp()期望const char *作为参数,但这不是您提供的内容(entered_variable不是const char *)。实际上,您不需要使用strcmp()。可以使用

轻松实现
if ( real_word[counter_1] == entered_variable )

现在,我也不明白你在这段代码中需要这么多for循环的原因是什么,比如第三个因为它只是多次打印相同的字符(我觉得你不需要这个)< / p>

答案 4 :(得分:0)

来自here:

  

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

这是strcmp的原型,它表明strcmp需要char *作为第二个参数,而entered_variablechar。所以,你不能在这里使用它。您可能必须使用另一种方法来比较它们。