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

C 与输入文件流关联的缓冲区,c,C,如何查看与输入文件流(STDIN)关联的缓冲区的内容。假设我们使用scanf、getchar或任何输入函数提供输入,那么它实际上是如何存储在缓冲区中的。特别是当我们按下“回车”键时 例如: 案例:1) $input两个整数: 10 20(输入) $input两个整数: 10(输入) 20(输入) 案例2: $输入两个字符 a b(输入) $输入两个字符 a(输入) b(输入) 为什么在案例1中它忽略空格键(ASCI-32),但在案例2中它将空格键作为下一个输入。它是scanf功能还是终端。在第一

如何查看与输入文件流(STDIN)关联的缓冲区的内容。假设我们使用scanf、getchar或任何输入函数提供输入,那么它实际上是如何存储在缓冲区中的。特别是当我们按下“回车”键时

例如:

案例:1)

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

案例2:

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

为什么在案例1中它忽略空格键(ASCI-32),但在案例2中它将空格键作为下一个输入。它是scanf功能还是终端。

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

鉴于

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

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


希望这有助于澄清一些问题

显示您正在使用的代码将使文章更易于理解和回答。所有
scanf()
说明符,如
%d“
%f”
%s”
都会使用并且不保存前导空格(包括
'
),除了
%c”
“%[”
%n”
scanf(%c“,…)
getkey()
不要忽略任何内容。好的……我已经理解了空格键的问题。现在在第二种情况下,程序将输入作为空格键或输入缓冲区中的第二个字符。是否有任何工具或实用程序可以看到与文件流相关联的输入缓冲区(在这种情况下为STDIN)。