printf函数与缓冲区

六眼飞鱼酱① 提交于 2019-12-11 20:05:28

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之后

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!