这是我迄今为止编译的程序,但输出错误。我正在尝试修复这个比较两个数组的函数,如果它们相等则返回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;
}
答案 0 :(得分:6)
为了证明,试试这个:
#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");
)