我正在尝试检查用户输入是否与char多维数组中的特定值匹配。但我似乎无法找到一种方法。用户输入将是1-9的数字。我将循环遍历我的数组以找到匹配的值。我的代码如下,
char input;
getline(cin,input);
char gameBoard[3][3] = {{'1','2','3'},
{'4','5','6'},
{'7','8','9'}
};
for(int i=0; i<3; i++)
{
for(int j=0; j<3; j++)
{
gameBoard[i][j]; //SOME CODE TO COMPARE THE VALUE TO USER INPUT
}
}
我尝试过使用strcmp,但只能用于单维数组。
我也尝试将char值转换为atoi的数字,但是我得到了一个错误,
error: invalid conversion from 'char' to 'const char*' [-fpermissive]|
有关如何比较的任何建议将不胜感激。感谢
答案 0 :(得分:1)
如何:
if (gameBoard[i][j] == input) {... }
答案 1 :(得分:0)
strcmp
期望一个以零结尾的字符串,而不是一个字符。如果您需要比较零终止字符串str
是否是单个字符c
,您可以使用
(str[0] == c) && (str[1] == '\0')
在你的情况下
if ((input[0] == gameBoard[i][j]) && (input[1] == '\0')) { /* ... */ }
'\ 0'是字符串的零终止符。在str[0]
之前检查str[1]
非常重要,因为str
可能为空(即str[0] == '\0'
),并且在读取超过字符串结尾时(例如来自{的值) {1}}),您的程序可能会崩溃。