为什么printf函数在遇到scanf时可以直接将输出缓冲区内容直接打印,而不用满足“行缓冲”要求。

问题遇到的现象和发生背景

printf函数作为一个行缓冲输入,为什么可以在:

  1. 缓冲区没有填满
  2. 没有换行符
  3. 程序没有结束

以上3种情况都不满足下能打印粗来

用代码块功能插入代码,请勿粘贴截图

c
int main()
{
int num;
printf("请输入学号");
scanf("%d", &num);

return 0;

}

运行结果及报错内容

img

我的解答思路和尝试过的方法

c
int main()
{

printf("这是个测试");
sleep(10);

return 0;

}

这种情况就不会输出,因为缓冲区没有满足以上3种情况