我正在尝试制作一个需要整数作为用户输入的脚本。
printf("What is your guess?\n--> ");
int guess;
scanf("%d", &guess);
但是当我尝试在 vscode 中使用 gcc 运行并编译它时,代码不会停止运行,也不会输出任何内容。当我使用 ctrl+c 时,它显示 code=null。
当我通过终端执行此操作时,它工作得很好。
我做错了什么?
我看过其他文章,但似乎没有帮助。
从绑定到终端的
stdout
读取数据后,您的环境不会刷新 stdin
。 您应该手动刷新输出:
#include <stdio.h>
int main(void) {
for (;;) {
printf("What is your guess?\n--> ");
fflush(stdout);
int guess;
if (scanf("%d", &guess) != 1) {
printf("missing or invalid input\n");
return 1;
}
if (guess == 42) {
printf("you win!\n");
return 0;
}
if (guess < 42) {
printf("too small! try again\n");
} else {
printf("too large! try again\n");
}
}
}