【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后面打印
页:
[1]