c - Printf 不按程序顺序执行

标签 c printing

<分区>

下面是一些简单的代码;请注意,在调用 waitFor() 之前, 有一个 printf 语句。为什么程序会暂停三秒钟然后然后打印消息?

int main(int argc, char* argv)
{
    producer();

    return 0;
}

void waitFor(unsigned int secs) {
    unsigned int retTime = time(0) + secs;   // Get finishing time.
    while (time(0) < retTime);               // Loop until it arrives.
}

static void *producer()
{
    int s = 3;
    printf("Busy for %d seconds", s);
    waitFor(s);
    return NULL;
}

最佳答案

你如何运行这个程序?有时 printf() 的输出是缓冲的,只有在打印大量数据或程序退出时才会出现。两种简单的修复方法是:

  • 使用标准错误:printf( -> fprintf(stderr,
  • flush after use: 在printf之后调用fflush(stdout)

关于c - Printf 不按程序顺序执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40712128/

相关文章:

css - FF 打印字段集被截断为一页的解决方法(错误 471015)

html - 修改打印的 HTML 页面的顶部和底部边距

java - 向 Zebra 打印机发送 SGD 命令并使用 Java 接收响应

C使用枚举来缩短代码

java - 在 JTable 之前和之后追加用于打印的文本

C 打印十六进制字节

使用calloc后C访问冲突

c - 循环无法识别变量?

c++ - MPI_Op_create : candidate function not viable. 自定义结构指针不能解释为空指针

c - "' X ` may be uninitialized in this function"警告和 pthread,C