我试图在满足if语句的条件后继续while循环,但是,如果if语句在for循环中,而continue语句只是继续for循环而不是while循环。我的代码如下:
while (valid_input == false) {
printf("Enter a date (yyyy/mm/dd): ");
fflush(stdout);
fgets(date, 20, stdin);
for (int i = 0; i <= 3; i++) {
if (!isdigit(date[i])) {
printf("Error: You didn't enter a date in the format (yyyy/mm/dd)\n");
continue;
}
}
我该如何编码,以便在满足条件(!isdigit(date [i]))之后在while循环的开头继续?
答案 0 :(得分:1)
您可以简单地使用另一个布尔变量来表示要continue
外循环和break
执行内循环:
while (valid_input == false) {
printf("Enter a date (yyyy/mm/dd): ");
fflush(stdout);
fgets(date, 20, stdin);
bool continue_while = false; // <<<
for (int i = 0; i <= 3; i++) {
if (!isdigit(date[i])) {
printf("Error: You didn't enter a date in the format (yyyy/mm/dd)\n");
continue_while = true; // <<<
break; // <<< Stop the for loop
}
}
if(continue_while) {
continue; // continue the while loop and skip the following code
}
// Some more code in the while loop that should be skipped ...
}
如果没有更多的代码需要在之后跳过,也许break;
循环中的for()
就足够了。
答案 1 :(得分:-1)
使用continue
是不可能的,您需要使用goto
或条件语句。很难,在您的特定情况下,break
会达到相同的结果。
顺便说一句。我不是在这里决定处理日期验证的设计决定。只需回答如何进行下一次while
迭代即可。