#include<stdio.h>
int main()
{
while(1)
{
fprintf(stdout,"Group");
fprintf(stderr,"XiyouLinux ");
getchar();
}
return 0;
}
如果不输入得到一行,光标停止,如果加换行
但是如果没有输入换行,就会得到下列结果
因为stdout会先放在缓存区,等错误信息打出,在执行清除缓存,所以Group最后写出
如果我们在stdout那一行加上换行就不同了
#include<stdio.h>
int main()
{
while(1)
{
fprintf(stdout,"Group\n");
fprintf(stderr,"XiyouLinux");
getchar();
}
}
Group会先输出,因为换行会清理缓冲
如果输入123会出现错位的神奇现象
因为Group后面有换行,先输出再换行,接着连接XiyouLinux
为了探索缓冲的问题再写一个例子
#include<stdio.h>
int main()
{
int i;
for(i=1;i<=400;i++)
{
fprintf(stdout,"Group");
fprintf(stderr,"XiYouLinux\n");
}
return 0;
}
输出结果两部分,很多行XiYouLinux和一堆Group
大家注意最后一行少了Group的p
此时统计Group所占得字节数
证明缓冲大小1024字节