printf函数与缓冲区
printf函数是一个行缓冲函数,先将内容写到缓冲区,满足一定条件后,才会将内容写入对应的文件或流中。
基本条件如下:
1.缓冲区填满 2.写入的字符中有‘\n’ '\r' 3.调用fflush或stdout手动刷新缓冲区 4.调用scanf等要从缓冲区中读取数据时,也会将缓冲区内的数据刷新5.程序结束时
有以下示例1验证:
1 #include <stdio.h>
2 #include <stdlib.h>
3
4 /*argc:命令行输入参数个数,argv:命令行参数
5 *argv为字符指针数组,argv[i]为指向第i个命令行参数内容的指针
6 */
7 int main(int argc, char **argv){
8 int i;
9 char a='a';
10 if(argc != 2) //命令行参数为2,否则出错
11 {
12 printf("Usage:%s Number\n",argv[0]);
13 return 0;
14 }
15
16 for(i=0;i<atoi(argv[1]);i++) //atoi:字符转化为整数
17 {
18 printf("%c",a);
19 }
20
21 while(1); //让程序一直运行
22 }
运行结果:


说明linux下,printf缓冲区大小为1024字节。while(1)使程序一直运行,当缓冲区未满时,不会输出打印。
示例2:
1 #include <stdio.h>
2
3 int main()
4 {
5 int i;
6 for(i=0; i<10; i++)
7 {
8 printf("a");
9 fflush(stdout); //参数为文件指针
10 }
11 while(1);
12 return 0;
13 }
没进行流刷新之前

流刷新fflush之后

来源:https://www.cnblogs.com/y4247464/p/12024742.html