与输入文件流关联的缓冲区

时间:2014-09-10 16:05:01

标签: c

我们如何看到与输入文件流(STDIN)相关联的缓冲区的内容。假设我们使用scanf,getchar或任何输入函数给出输入,它实际上是如何存储在缓冲区中的。特别是当我们按下"进入"关键。

示例:

情况下:1)

$输入两个整数: 10 20(输入) $ input两个整数: 10(进入) 20(输入)

案例2:

$输入两个字符 a b(输入) $输入两个字符 一个(输入) B(输入)

为什么在情况1中它忽略空格键(ASCI-32)但在case2中它将空格键作为下一个输入。是scanf功能或终端的属性。

1 个答案:

答案 0 :(得分:0)

在第一种情况下 这里是忽略空格键,因为根据ascii字符集“空格”是 一个字符,其十进制的ascii值为32 当“%d”遇到值32时,它会忽略它,因为它不能是整数,因为
整数文字的范围介于48(0)和57(9)之间。

在第二种情况下,我们使用“%c”来输入空格(ascii-32)为
的字符 一个完全有效的输入,因此不被忽略。

您也可以使用%d输入字符,但是您必须提供ascii值
对于您要输入的字符,例如:
如果要输入并显示“A”作为字符,则输入必须为65.

希望这有助于清除一些事情。