注:printf()函数在windows下无缓冲区,在linux存在缓冲区。
一、缓冲区
printf()函数在linxu下执行时:将缓冲区中的内容显示在屏幕上并刷新缓冲区
因此,当在使用printf()函数时,当缓冲区不刷新时,不会立刻将内容显示在屏幕上。
二、缓冲区刷新的时机
printf()函数缓冲区刷新的时机通常有以下四个:
1.需要输入的时候 |
2.当遇到换行符'\n'的时候 |
3.当缓冲区满时 |
4.程序正常结束时 |
三、加深理解的练习题
问:请问以下代码输出多少个hello?
int main(void)
{
int i;
for (i = 0; i < 2; i++) {
fork();
printf("hello");
}
return 0;
}
答:这是一个比较经典的题目,其中fork()函数是创建子进程,详情可以查看下相关的CSDN资料。这里就涉及到:在fork()时,未刷新printf()缓冲区的情况下,将子进程的内容直接追加到父进程的内容的后边,再一并输出。一共输出4次,每次都是hellohello,因此答案是8次。
注意:如果是下边的情况,则是6次,因为\n刷新了缓冲区。
int main(void)
{
int i;
for (i = 0; i < 2; i++) {
fork();
printf("hello\n");
}
return 0;
}