美文网首页
C语言缓冲区问题

C语言缓冲区问题

作者: AwesomeAshe | 来源:发表于2017-03-20 16:44 被阅读124次

今天写了一个简单的输入输出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的命令行界面编译并执行:

GIT CLI编译运行

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

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

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

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

相关文章

网友评论

      本文标题:C语言缓冲区问题

      本文链接:https://www.haomeiwen.com/subject/pfkinttx.html