谷动谷力
标题:
【C语言】printf 缓冲区原理
[打印本页]
作者:
鸣涧
时间:
2023-12-19 23:02
标题:
【C语言】printf 缓冲区原理
【C语言】printf 缓冲区原理
我们先来看一个程序,代码如下:
#include <stdio.h>
/// @brief
/// @return
int main()
{
printf("Hello, World!\n"); // 打印字符串 "Hello, World!"
fprintf(stderr, "Hello, World!\n"); // 将字符串 "Hello, World!" 输出到错误流
printf("Hello, %s!\n", "World"); // 打印格式化的字符串 "Hello, World!"
printf("1"); // 打印数字 1
fprintf(stderr, "2"); // 将数字 2 输出到错误流
printf("3"); // 打印数字 3
printf("4"); // 打印数字 4
fprintf(stderr, "5"); // 将数字 5 输出到错误流
printf("\n"); // 打印换行符
return 0; // 返回0表示程序正常退出
}
复制代码
保存文件名为test_printf.c
在Linux环境下编译
gcc -o test_printf test_printf.c
复制代码
思考一下,你觉得会什么结果呢?
Hello, World!
Hello, World!
Hello, World!
25134
复制代码
纳尼,输出结果是这样的?
Why, 一定电脑、系统、编译器……出问题了,你脑海里是不是会冒出这样的想法?
我们来解密一下为什么会输出这样的结果吧。
Linux系统的printf有一个输出缓冲区,而windows没有这一特性。
fprintf(stderr, "2");没有缓冲区,会立即输出,所以25先打印出来134后面打印
欢迎光临 谷动谷力 (http://bbs.sunsili.com/)
Powered by Discuz! X3.2