在while循环中使用scanf来不断要求用户输入数字,直到输入数字为止

时间:2019-11-25 04:24:08

标签: c scanf

因此,我试图一直询问用户一个数字,直到输入一个数字,然后打印结果,但是在第一次迭代后我无法调用scanf。任何帮助将不胜感激。

int main(void) {

    int x;

    int entered_an_number = 0;

    while(!(entered_an_number)) {

        printf("Please enter a number: \n");

        if(scanf("%d", &x) == 1) {
            entered_an_number = 1;
        }
    }

    printf("You entered: %d \n", x);

    return 0;
}

1 个答案:

答案 0 :(得分:3)

简短的答案与大多数scanf问题的答案一样,是不要使用scanf 。使用fgets读取一行输入,然后在该输入内部进行扫描,例如:

    char input[128];
    fgets(input, sizeof input, stdin);
    if(sscanf(input, "%d", &x) == 1) {
        entered_an_number = 1;
    }