当使用诸如scanf
之类的函数时,您从缓冲区读取字节,其中(通常)存储来自键盘的数据。这些数据是如何存储的?它存储在固定大小的矢量中吗?有没有办法直接从代码访问它?
答案 0 :(得分:3)
标准库输入例程使用的缓冲区对于标准库的实现是私有的。除了通过已发布的标准库接口之外,您无法访问它。
答案 1 :(得分:2)
setvbuf()
函数允许您重新配置stdio流的缓冲类型,并将缓冲区替换为已分配的缓冲区。这并不意味着您应该访问C库后面的缓冲区,但它确实可以控制大小以及流是无缓冲,行缓冲还是完全缓冲。
答案 2 :(得分:1)
您无法直接读取缓冲区。您可以做的最好的事情是在键入时直接读取击键,有效地使您能够编写自己的scanf()。要查看阅读键击的代码,请在此页面上搜索“kbhit.c”:http://pwilson.net/sample.html