2011-10-23 51 views
0

当使用诸如scanf之类的函数时,您可以从缓冲区中读取字节,其中(通常情况下)会存储来自键盘的数据。这些数据如何存储?它存储在一个固定大小的矢量内吗?有没有什么办法直接从代码访问它?stdin缓冲区如何工作?

回答

3

标准库输入例程使用的缓冲区对于标准库的实现是私有的。除了通过发布的标准库接口之外,您无法访问它。

2

setvbuf()函数可让您重新配置stdio流的缓冲类型,并将缓冲区替换为已分配的缓冲区。这并不意味着您应该访问C库后面的缓冲区,但它确实可以控制大小以及流是否无缓冲,行缓冲或完全缓冲。

1

您无法直接读取缓冲区。您可以做的最好的事情是直接在输入键盘时读取键盘输入,有效地使您可以编写自己的scanf()。要查看用于阅读击键的代码,请在此页上搜索“kbhit.c”:http://pwilson.net/sample.html