C++ Hangman程序检查功函数
这是我到目前为止编译的程序,但输出是错误的。我正在尝试修复这个函数,该函数比较两个数组,如果它们相等,则返回true,如果不相等,则返回falseC++ 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
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 请澄清问题所在。我们需要一些报告/说明出现了什么问题,最好是您使用的平台/编译器。如果逻辑中有缺陷,肯定是在一个函数中,对吗?看看调试器,看看每样东西都有什么值,看看什么东西不能按你期望的方式工作!在接触社区之前,你至少应该能够自己缩小问题的范围。仅仅提交一堆代码有点粗鲁