C语言缓冲区问题

今天写了一个简单的输入输出C语言程序:

#include 

int main()
{
    //setvbuf(stdout,NULL,_IONBF,0);
    char str[20];
    printf("aha?");
    //fflush(stdout);
    scanf("%s",&str);
    printf("%s",str);
}

然后我用Git的命令行界面编译并执行:

GIT CLI编译运行

执行的结果是,这东西不打印,等我输入完一起打印。

后来我发现是第一句printf并没有刷新缓冲区!
解决方案:

  • 在程序的第一行设置缓冲区为0
    setvbuf(stdout,NULL,_IONBF,0);
  • 手动刷新缓冲区
    fflush(stdout)

但是我想,我以前没遇到啊,我看有人说这是windows和linux的区别??
于是我打开windows的命令行试了一下,根本不需要手动刷新的!
这个程序正常运行~

你可能感兴趣的:(C语言缓冲区问题)