C ++ Hangman程序检查是否有工作函数

时间:2011-02-03 01:09:19

标签: c++

这是我迄今为止编译的程序,但输出错误。我正在尝试修复这个比较两个数组的函数,如果它们相等则返回true,否则返回false。

bool CheckWon ( char selectedWord[], char gameBoard[] )
{
    bool checkWon = false;
    int length = strlen(selectedWord);

    for (int i = 0; i < length; i++)
    if ( strcmp( gameBoard[i], selectedWord[i] ) == 0)
        checkWon = true;

    return checkWon;
}

2 个答案:

答案 0 :(得分:6)

嗯,只是因为习惯滚动到底部...是你在CheckWon的问题?你无法比较那样的字符数组;你需要逐个字符地比较它们,或者因为你正在使用C ++,所以升级到std :: string以便可以测试相等性。

为了证明,试试这个:

#include <iostream>

int main() {
    char a[] = "Hello";
    char b[] = "Hello";
    if (a == b) {
        std::cout << "equal" << std::endl;
    } else {
        std::cout << "not equal" << std::endl;
    }
    return 0;
}

答案 1 :(得分:0)

查看您编辑的代码(只是CheckWon函数):selectedWord和gameBoard都是以null结尾的char数组?如果是这样,您可以将此功能重写为:

bool CheckWon ( char selectedWord[], char gameBoard[] )
{
    return strcmp(gameBoard, selectedWord) == 0;
}

(您的代码应该在功能上与此相当,但效率要低得多。)

但是既然你说你的代码给出了错误的答案,我怀疑情况并非如此。如果这是真的,那么你需要将数组的长度作为额外的args传递并重写你的逻辑。 (我建议首先测试数组的长度是否相等。)

编辑:我认为您的代码存在的问题是,如果两个参数以相同的后缀结尾(例如CheckWon("foo", "boo");

,它将返回true