C语言 在遍历数组时,如何确保打印出正确的输出?



我正在制作一个简单的 C 程序,该程序接受用户输入并检查它是否是数组中的有效密码。我发现,如果它是数组中的最后一个密码(如果有 7 个有效密码(,并且我使用 if 语句遍历数组中的每个元素以检查有效性,它会打印"访问被拒绝",直到达到正确的密码,因为它不是前几个允许的密码之一。

这是我所拥有的:

int userPass = 1971;
int validPass [] = {1912, 1914, 1922, 1947, 1958, 1964, 1971};
int i = 0;
while (validPass[i])
{
if (userPass == validPass[i])
{
printf("Access granted n");
}
else
{
printf("Access denied n");
}
i++;
}

这打印了"访问被拒绝"6次,然后在第7次打印"访问已授予",因为根据数组中的第7个元素,用户密码是正确的。如何让它在打印授予或拒绝访问权限之前检查每个元素的有效性,以确保即使它是数组中的最后一个元素,也会打印正确的行?我尝试将我的 i++ 移动到 else 语句之前和 if 语句内,但程序不喜欢这样。

当您循环浏览选项时,不要打印任何内容。 如果找到正确的值,请设置一个标志。 然后根据标志的值打印文本。

int found = 0;
while (i<(sizeof(validPass)/sizeof(validPass[0])) {
if (userPass == validPass[i]) {
found = 1;
break;
}
i++;
}
if (found) {
printf("Access granted n");
} else {
printf("Access denied n");
}

相关内容

  • 没有找到相关文章

最新更新