scanf()函数的“吃空白”行为

算是个小发现吧。

今天晚上敲代码的时候,敲了这么一行

scanf("%d ",&e);

看起来就是很简单的scanf()函数获取用户输入,但是我竟然要敲两个值才能继续运行,而最后使用的只是我第一次输入的值,很奇怪,上网搜了一下,发现scanf()函数存在“吃空白”行为

scanf()函数默认以空格作为分割输入的标志,这也就是说,如果我们的scanf语句里如上所示,%d后面还有一个空格的话,scanf读到这个空格就会以为我们还要输入内容,因此我们只有再输入字符才能退出scanf语句。当然,因为没有用来接收后面输入的字符的变量,因此变量e中保存的自然为第一次输入的值。