我明白这fflush(stdin)会导致未定义的行为,因为fflush只为输出缓冲区定义.
但为什么呢?有没有fflush为输入缓冲区定义的历史原因?
C++提供了一种清除标准输入缓冲区的方法,cin.clear()我不明白为什么它在C标准中未定义.
为什么要 fflush(stdin)定义?从程序的角度来看,缓冲是透明的,因此fflush(stdin)可以不丢弃,或者它可以消耗和丢弃整个输入数据流.与输出流不同,程序控制发出的内容,程序不知道输入缓冲区中的内容.
结果fflush(stdin)不清楚 - 没有明确的方式来说明它会做什么.只需在一个输入流上尝试它,该输入流不是指定其行为的平台上的行缓冲模式的终端.然后更改缓冲区的大小并再次尝试.您可能会在随后阅读的数据中获得完全不同的结果.
| 归档时间: |
|
| 查看次数: |
106 次 |
| 最近记录: |