今天写了一个简单的输入输出C语言程序:
#include <stdio.h>
int main()
{
//setvbuf(stdout,NULL,_IONBF,0);
char str[20];
printf("aha?");
//fflush(stdout);
scanf("%s",&str);
printf("%s",str);
}
然后我用Git的命令行界面编译并执行:

执行的结果是,这东西不打印,等我输入完一起打印。
后来我发现是第一句printf并没有刷新缓冲区!
解决方案:
- 在程序的第一行设置缓冲区为0
setvbuf(stdout,NULL,_IONBF,0);
- 手动刷新缓冲区
fflush(stdout)
但是我想,我以前没遇到啊,我看有人说这是windows和linux的区别??
于是我打开windows的命令行试了一下,根本不需要手动刷新的!
这个程序正常运行~
网友评论