printf函数与缓冲区

时间:2023-03-09 00:50:15
printf函数与缓冲区

printf函数与缓冲区

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

基本条件如下:

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

有以下示例1验证:

 #include <stdio.h>
#include <stdlib.h> /*argc:命令行输入参数个数,argv:命令行参数
*argv为字符指针数组,argv[i]为指向第i个命令行参数内容的指针
*/
int main(int argc, char **argv){ 
int i;
char a='a';
if(argc != ) //命令行参数为2,否则出错
{
printf("Usage:%s Number\n",argv[]); 
return ;
} for(i=;i<atoi(argv[]);i++) //atoi:字符转化为整数
{
printf("%c",a);
} while(); //让程序一直运行
}

运行结果:

printf函数与缓冲区

printf函数与缓冲区

说明linux下,printf缓冲区大小为1024字节。while(1)使程序一直运行,当缓冲区未满时,不会输出打印。

示例2:

 #include <stdio.h>

 int main()
{
int i;
for(i=; i<; i++)
{
printf("a");
fflush(stdout); //参数为文件指针
}
while();
return ;
}

没进行流刷新之前

printf函数与缓冲区

流刷新fflush之后

printf函数与缓冲区