提问人:Tiến Đạt Lê 提问时间:4/28/2023 最后编辑:wohlstadTiến Đạt Lê 更新时间:4/28/2023 访问量:42
如何在 C 中使用 getchar() 和无限循环创建一个需要数字输入的程序,该输入在键入非数字字符后退出
How to create a program that requires number inputs that exits after typing a non-numeric character, using getchar() and infinite loop in C
问:
一个作业要求我们在 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;
}
但是当我运行代码并键入任何内容时,无论我键入什么,它都会在第一次尝试后停止。
您能找到一种方法来纠正上面的代码吗?
答:
0赞
Allan Wind
4/28/2023
#1
stdin
默认情况下,是 line buffered,这意味着在您按 之前,您的程序不会接收到输入。如果你对整个换行符做一些类似的事情(双关语):<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;
}
}
评论
;
{}
Enter
printf("%d\n", x);
getchar
123<enter>