如何在C中使用getchar()和无限循环创建一个需要数字输入的程序,该程序在键入非数字字符后退出

tpxzln5u  于 2023-04-29  发布在  其他
关注(0)|答案(1)|浏览(88)

一个赋值要求我们用C语言创建一个程序,要求用户只输入数字,使用getchar()和带有while(1)的无限循环,在输入非数字字符后停止。
这是我的尝试:

#include <stdio.h>
#include <ctype.h>
#include <string.h>

int main(){
    while(1){
        int x = getchar();
        if (isdigit(x) == 0){
            break;  
        };
    };
    return 0;
}

但是当我运行代码并键入任何内容时,它都会在第一次尝试后停止,无论我键入什么。
你能找到一种方法来纠正上面的代码吗?

nzk0hqpo

nzk0hqpo1#

默认情况下,stdin是行缓冲的,这意味着在您按下<enter>之前,程序不会接收到输入。如果你要整行换行,请沿着下面的行做一些事情(双关语):

#include <stdio.h>
#include <ctype.h>
#include <string.h>

int main(void) {
    for(;;) {
        int x = getchar();
        if(x == '\n')
            continue;
        if (!isdigit(x))
            break;
    }
}

相关问题