printf函数与缓冲区

printf函数与缓冲区linux

printf函数是一个行缓冲函数,先将内容写到缓冲区,知足必定条件后,才会将内容写入对应的文件或流中。数组

基本条件以下:函数

1.缓冲区填满 2.写入的字符中有‘\n’ '\r'
3.调用fflush或stdout手动刷新缓冲区 4.调用scanf等要从缓冲区中读取数据时,也会将缓冲区内的数据刷新
5.程序结束时

有如下示例1验证:spa

 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)使程序一直运行,当缓冲区未满时,不会输出打印。3d

示例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 }

没进行流刷新以前code

流刷新fflush以后blog

相关文章
相关标签/搜索