代码之家  ›  专栏  ›  技术社区  ›  Ritwik Bose

为什么我的输出只有在后面有另一个打印时才打印?

  •  1
  • Ritwik Bose  · 技术社区  · 15 年前

    有趣的小虫子:

    if (host != NULL) {
        printf("hi");
    } else {
        printf("FAIL");
    }
    return 0;
    

    完全不打印任何内容,但:

    if (host != NULL) {
        printf("hi");
    } else {
        printf("FAIL");
    }   
    fprintf(stdout, "\n%s\n", (char *)&additionalargs);
    return 0;
    

    印刷品

    你好

    abc

    有人知道这是为什么吗?

    3 回复  |  直到 15 年前
        1
  •  5
  •   pavium    15 年前

    区别是\n个字符。

    当您打印字符时,它们被累积在一个缓冲区中,在发送“行尾”字符之前,缓冲区不会发送到输出设备。

        2
  •  7
  •   Damien_The_Unbeliever    15 年前

    对输出到stdout的printf进行缓冲。你可能想看看 fflush

        3
  •  0
  •   manav m-n    15 年前

    试用使用 fflush(stdout) 在你之前 if 条件。