gpt4 book ai didi

c - 为什么 printf 在调用后不会刷新,除非格式字符串中有换行符?

转载 作者:行者123 更新时间:2023-11-30 16:48:22 28 4
gpt4 key购买 nike

为什么 printf 在调用后不会刷新,除非格式字符串中有换行符?这是 POSIX 行为吗?我怎样才能让 printf 每次都立即刷新?

最佳答案

stdout 流默认是行缓冲的,因此只会在到达换行符(或被告知时)后显示缓冲区中的内容。您有几个选项可以立即打印:

  • 使用 fprintf 打印到 stderr(stderrunbuffered by default ):

    fprintf(stderr, "I will be printed immediately");
  • 每当需要时使用fflush刷新stdout:

    printf("Buffered, will be flushed");
    fflush(stdout); // Will now print everything in the stdout buffer
  • 使用 setbuf 禁用标准输出上的缓冲:

    setbuf(stdout, NULL);
  • 或者使用更灵活的setvbuf :

    setvbuf(stdout, NULL, _IONBF, 0); 

关于c - 为什么 printf 在调用后不会刷新,除非格式字符串中有换行符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42981693/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com