您的位置:首页 > 编程语言 > C语言/C++

容易被忽略的输入和输出

2016-11-27 00:13 155 查看
在C语言里,我们经常用scanf作为输入语句,用printf输出。那么关于输入和输出,你到底了解多少呢?

一、关于“&”

  首先我们来看一容易被忽略的输入和输出

#include <stdio.h>

int main()
{
printf("Hello world!");

while (1) ;

return 0;
}


  运行之后的结果是什么呢?是“Hello world!”么?当然不是。当我们运行了之后,会发现什么都不打印,并且陷入死循环。可能有人要问了,为什么不打印“Hello world!”呢?这便是我要给大家介绍的printf的一个特点。

  printf是一个行缓冲函数,并且printf与scanf使用同一个缓冲区。先写到缓冲区,当满足一定的条件之后,才会将缓冲区的内容输出。而这里需要满足的一定条件如下:

  ①缓冲区满

  ②写入的字符里有’\n’

  ③手动刷新缓冲区

  ④调用scanf,需要从缓冲区读取数据

  ⑤程序退出

  针对④,printf与scanf使用同一个缓冲区,当使用scanf时,会吧printf在缓冲区的数据清出来,于是可以输出。针对⑤,在程序退出时,会把缓冲区打扫干净,同样会清缓冲区,在清缓冲区的过程中会输出。

  所以希望我们大家在使用printf时,养成加’\n’的好习惯,这样才不会出现一些本不应该出现的错误。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  c语言