今天我遇到了一个问题,我决定按照教程开始学习 C,并且到了我的程序编译但只是阻塞的地步 代码:
#include <stdio.h>
#include <stdlib.h>
int main()
{
int age;
printf("Enter your age: ");
scanf("%d", &age);
printf("%d", age);
return 0;
}
编译后的以下代码不显示任何内容,程序永远不会退出
您的系统似乎需要在尝试从
stdout
读取之前手动将输出刷新到 stdin
。这通常不是必需的,但根据 IDE 的实现方式,读取时自动刷新的机制可能无效。
Enter your age:
提示在输出流缓冲区中挂起,因为程序已经在等待将输入转换为 int
,来自终端的输入是行缓冲的,因此它只能用于 scanf()
一旦用户按下 Enter 键。
这里是修改版:
#include <stdio.h>
int main(void) {
int age;
printf("Enter your age: ");
fflush(stdout);
if (scanf("%d", &age) == 1) {
printf("%d\n", age);
} else {
printf("invalid input\n");
}
return 0;
}