|
发表于 2020-3-20 05:30:01
|
显示全部楼层
To:superandy
这个可能不能只想键盘。
是K&R的《The C Programming Language》上说的:
附录B1.1:
On an output stream, fflush causes any buffered but unwritten data to be written; on an input stream, the effect is undefined.
C语言标准上当然也有提到。
C99 7.19.5.2
(2) If stream points to an output stream or an update stream in which the most recent operation was not input, the fflush function causes any unwritten data for that stream to be delivered to the host environment to be written to the file; otherwise, the behavior is undefined.
我是这样理解的:虽然对于一般的键盘及其驱动模式来说,清一个键盘的缓冲区,其意义完全是可以理解的。
但C/C++的“标准输入流”却不一定指向一般键盘,而且还可以被重定向。
比如,如果stdin被重定向到一个文件,那么对一个文件输入进行“flush”,其意义难道不令人费解吗?是要把读到内存里的部分都丢弃?还是按行丢弃?如果是二进制文件呢? |
|