微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

为什么输出的执行顺序不符合预期

如何解决为什么输出的执行顺序不符合预期

我正在学习 c 语言,但在教程中遇到了一些代码,如下所示。

#include <stdio.h>
 
int main() {
    fprintf(stdout,"This is to stdout. ");
    fprintf(stderr,"This is to stderr. ");
    fprintf(stdout,"This is also to stdout. ");
}

他们得到的结果是

This is to stderr. This is to stdout. This is also to stdout. 

这是乱序 但我得到的是

This is to stdout. This is to stderr. This is also to stdout.

这是有序的。 所以这太奇怪了,为什么我得到了不同的结果? (我指的 tut 是 https://www.journaldev.com/39049/fflush-in-c

解决方法

也许在您的实现中,stdout无缓冲。检查您的文档。

您可能想尝试 setvbuf()stdout 恢复为 line-buffered:例如,在 {{1 的开头使用 setvbuf(stdout,_IOLBF,1000); }} 在任何其他使用 main() 之前。


通常 stdout行缓冲,而 stdout无缓冲

unbuffered :一旦数据可用,操作系统就会将数据从流发送到设备。

行缓冲:当达到换行符(或限制)时,数据被发送到设备。

完全缓冲:当缓冲区已满时,数据被发送到设备。

stderr

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。