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

在C语言中,stdout缓冲区的大小是多少?

如何解决在C语言中,stdout缓冲区的大小是多少?

实际大小由各个实现定义;该标准并没有规定最小大小(无论如何,基于我已经能够找到的大小)。没有关于如何确定缓冲区大小的线索。

章节

7.19.3文件

… 3当流没有 缓冲时 ,字符应尽快从源或目标出现。否则,字符可能会作为块被累积并传输到主机环境或从主机环境传输。当一个流被 完全缓冲后 ,在缓冲区被填充后,字符将作为块与主机环境进行传输。当流被 行缓冲时 ,当遇到换行符时,字符打算作为块与主机环境进行传输。此外,当缓冲区已满,在无缓冲流上请求输入或在需要从主机环境传输字符的行缓冲流上请求输入时,打算将字符作为块传输到主机环境。 。 。

重点已添加

“实现定义的”不是对“我不知道”的委婉说法,它只是语言标准明确地将其留给 实现定义 行为的声明。

话虽这么说,但是 一种非编程的方法可以找到答案。请查阅编译器的文档。“实施定义的”还意味着实现 必须 记录以下行为:

3.4.1

1 指定的行为,其中每个实现都记录了如何做出选择

。2示例实现定义的行为的一个示例是有符号整数右移时的高阶位的传播。

解决方法

今天,我了解到,将stdout设置为terminal并在不同情况下进行缓冲时,它是行缓冲的。因此,在正常情况下,如果我使用printf()而不以“ \
n”结尾,则仅在缓冲区已满时才在屏幕上打印它。如何获得此缓冲区的大小,这有多大?

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