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