Как использовать continue для цикла while во вложенном цикле for - PullRequest
0 голосов
/ 10 апреля 2019

Я пытаюсь продолжить цикл 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]))?

Ответы [ 2 ]

1 голос
/ 10 апреля 2019

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

0 голосов
/ 10 апреля 2019

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

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

...