C++ Hangman程序检查功函数

C++ Hangman程序检查功函数,c++,C++,这是我到目前为止编译的程序,但输出是错误的。我正在尝试修复这个函数,该函数比较两个数组,如果它们相等,则返回true,如果不相等,则返回false bool CheckWon ( char selectedWord[], char gameBoard[] ) { bool checkWon = false; int length = strlen(selectedWord); for (int i = 0; i < length; i++) if ( st

这是我到目前为止编译的程序,但输出是错误的。我正在尝试修复这个函数,该函数比较两个数组,如果它们相等,则返回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;
}

嗯,只是习惯性地一直滚动到底。。。你的问题在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;
}

查看您编辑的代码,只需使用CheckWon函数:selectedWord和gameBoard是否都是以null结尾的字符数组?如果是,您可以将此函数重写为:

bool CheckWon ( char selectedWord[], char gameBoard[] )
{
    return strcmp(gameBoard, selectedWord) == 0;
}
您的代码在功能上应该与此等效,尽管效率要低得多

但既然你说你的代码给出了错误的答案,我怀疑事实并非如此。如果这是真的,那么您需要将数组的长度作为附加参数传递,并稍微重写您的逻辑。我建议首先测试数组的长度是否相等


编辑:我认为代码的问题在于,如果两个参数以相同的后缀结尾,例如CheckWonfoo,boo,它将返回true

请澄清问题所在。我们需要一些报告/说明出现了什么问题,最好是您使用的平台/编译器。如果逻辑中有缺陷,肯定是在一个函数中,对吗?看看调试器,看看每样东西都有什么值,看看什么东西不能按你期望的方式工作!在接触社区之前,你至少应该能够自己缩小问题的范围。仅仅提交一堆代码有点粗鲁