Подскажите пользователю запросить ввод, пока условие не будет выполнено? - PullRequest
0 голосов
/ 26 сентября 2018
int32_t number;
uint32_t x = 1;

puts("What number do you want to count: ?");
{
    scanf("%i", &number);
    printf("You typed%i.\n", number);
    while(x < number) {
        printf("%i and then \n", x);
        x++;
    }
    if (x > 100 || x < 1)
        printf("error");
}

Я хочу напечатать все числа, пока пользователь не введет числа.Но если введенное число меньше 1 или больше 100, тогда должно появиться сообщение об ошибке и попросить пользователя ввести число снова, но оно этого не делает.например, если число равно 455, оно должно сказать «ошибка» и предложить пользователю ввести номер еще раз. Вышеприведенная программа печатает ошибку только после печати всех чисел, четных или меньших, чем 100 и 1 соответственно.

1 Ответ

0 голосов
/ 26 сентября 2018
#include <stdint.h>
#include <stdio.h>

int main(void)
{
    int32_t number;

    while (puts("What number do you want to count? "),  // prompt the user
           scanf("%i", &number) != 1                    // reading an int failed
           || number < 1 || 100 < number)               // number not in range
    {
        fputs("Error!\n\n", stderr);       // print an error message
        int ch;
        while ((ch = getchar()) != EOF && ch != '\n');  // remove garbage left in stdin
    }

    printf("You typed %d.\n", number);

    for(int32_t i = 0; i < number; ++i)
        printf("%i and then\n", i);
}
...