Как использовать continue для цикла while во вложенном цикле for

-3

Однако я пытаюсь продолжить цикл while после выполнения условия оператора if, если оператор 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;
}

}

Как я могу кодировать это, чтобы продолжить в начале цикла while после выполнения условия (! Isdigit (date [i]))?

спросил(а) 2019-04-10T00:57:00+03:00 10 месяцев, 2 недели назад
0
50

Вы можете просто использовать другую логическую переменную, чтобы указать, что вы хотите 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() уже достаточно, если больше нет кода, который нужно пропустить после.

ответил(а) 2019-04-10T01:04:00+03:00 10 месяцев, 2 недели назад
-4

Невозможно использовать continue, вам нужно использовать goto или условные goto. Круто, в вашем конкретном случае break даст тот же результат.

Btw. Я не жонглирую решением о дизайне, чтобы обрабатывать подтверждение даты здесь. Просто отвечая, как перейти к следующему в while итерации.

ответил(а) 2019-04-10T01:05:00+03:00 10 месяцев, 2 недели назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема