c语言--scanf()函数与输入缓冲区

参考 https://www.cnblogs.com/-LXZ/articles/5679736.html

scanf()函数-读取过程机制

首先,电脑有一个区域叫做输入缓冲区,当我摁1时,输入缓冲区就会有1,摁2就会有2

    同理helloworld也是这样的。他们就像排队一样,按照顺序的被放置在输入缓冲区里。

其次,我们使用的scanf()函数是从输入缓冲区里面读取的,读取顺序是按照进来的顺序。。比如说,我键入了123,然后再键入1234,那么,第一条语句就会把123从输入缓冲区拿走,第二条语句就会把1234从输入缓冲区拿走。

在这里可以这么说,要从输入缓冲区拿东西你得要带合适的工具才行,不然它不会被带走,就一直在那里,尽管你后面怎么添加正确的输入也是没用的。。。

附录:

scanf 类型说明符:

类型合格的输入参数的类型
%c   单个字符:读取下一个字符。如果指定了一个不为 1 的宽度 width,函数会读取 width 个字符,并通过参数传递,把它们存储在数组中连续位置。在末尾不会追加空字符。   char *  
%d   十进制整数:数字前面的 + 或 - 号是可选的。   int *  
%e、%E、%f、%F、%g、%G   浮点数:包含了一个小数点、一个可选的前置符号 + 或 -、一个可选的后置字符 e 或 E,以及一个十进制数字。两个有效的实例 -732.103 和 7.12e4   float *  
%s   字符串。这将读取连续字符,直到遇到一个空格字符(空格字符可以是空白、换行和制表符)。   char *  
%u   无符号的十进制整数。   unsigned int *  
%p   读入一个指针 。      

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zwgpjp.html