【发布时间】:2020-11-21 18:24:51
【问题描述】:
我正在尝试创建一个函数,当传递一个数组时,它会根据一个有效字符数组检查它,如果它们都有效则返回 true,如果其中一个不有效则返回 false。
尽管存在无效字符,但我的第二个断言失败了。
void test (void)
{
char testArr1[MAXGRIDHW][MAXGRIDHW] = {{"..."},
{"..."},
{"..."}};
char testArr2[MAXGRIDHW][MAXGRIDHW] = {{"..z"},
{"..."},
{"..."}};
assert(noInvalidLetters(testArr1) == true);
assert(noInvalidLetters(testArr2) == false);
}
bool noInvalidLetters (char b[][MAXGRIDHW])
{
int i, j;
bool valid;
const char validChars[MAXVALIDCHARS] = {'k', 'K', 'r', 'R', 'g', 'G', 'y',
'Y', 'b', 'B', 'm', 'M', 'c', 'C',
'w', 'W', '.'};
for (i = 0; i < MAXGRIDHW; i++) {
for (j = 0; j < MAXGRIDHW; j++) {
if (strchr(validChars, b[i][j])){
valid = true;
} else {
valid = false;
}
}
}
return valid;
}
【问题讨论】: