为什么fflush()
不被认为是安全的?我被告知它显示未定义的行为?如果是这样,fflush()的替代选择是什么?为什么fflush()不被认为是安全的?
3
A
回答
6
你可能被告知fflush(stdin)
是未定义的,这是正确的。但是fflush
是您想要刷新的其他流的路线,例如stdout
。
为了澄清,该流必须用于输出。该标准说:
如果流点到输出流或其中 最近的操作不是输入的更新流,fflush函数使该流的任何 未写入的数据被传递到主机环境将 写入文件;否则,行为是不确定的。
后来的标准包括这种明确为“未指定的行为”:
流为fflush函数指向一个输入流或到 更新流其中最近一次操作是输入
+0
驱动器downvoter:我很担心你。现在来评论,我们可能仍然能够帮助你。 – cnicutar
4
您误会了。
上的输入流调用fflush()
已至于C标准而言有些系统和/或二级标准,如POSIX可以定义其行为未定义的行为,但它不是依靠在代码是个好主意这是为了便携。
在输出流上调用fflush()
,例如fflush(stdout)
,是完全安全和明确的。它会导致任何挂起的输出被传送到操作系统(不保证它将被传送到物理输出设备)。
在某些情况下,在输入流上调用fflush
时,实际上应该读取并放弃输入字符,例如,直到看到换行符'\n'
或EOF
。或者,通常更好的方法是使用fgets
或类似的方法一次读取整行,然后解析输入。
相关问题
- 1. 为什么我的javascript不被认为是安全的?
- 2. 为什么$ _REQUEST变量被认为是不安全的?
- 3. 为什么这被认为是Sharepoint中的“不安全更新”?
- 4. 为什么strtok()被认为是不安全的?
- 5. 为什么SSL被认为是安全的?
- 6. 为什么“strcat”被视为“不安全”?
- 7. 为什么有些随机()函数被认为“不安全?”
- 8. 为什么我的安全iframe被报告为不安全?
- 9. 为什么<style>块被认为是不安全的标记?
- 10. 为什么这些5(6?)字符被认为是“不安全的”HTML字符?
- 11. 为什么认为加密更安全?
- 12. 如何通过PayPal API凭证安全地使用PHP(以及为什么这不被认为是安全的)
- 13. 为什么不会fflush(stdin)的工作?
- 14. 为什么这些逆变参数类型被认为是安全的?
- 15. 为什么静态字段通常被认为是线程安全的?
- 16. 为什么写入JS中的剪贴板被认为是安全漏洞?
- 17. 为什么肥皂是安全的?为什么不使用HTTPS?
- 18. Mac OSX? Linux呢? X?侏儒? KDE?为什么osx被认为是linux,为什么它不被认为是linux?
- 19. 为什么全局变量被认为是“禁忌”语法?
- 20. 为什么Redis被认为是CP?
- 21. 为什么'\\'被认为是int?
- 22. 这为什么不安全?
- 23. 为什么Generics.Collections.TObjectList.List不安全?
- 24. __caller__为什么不安全?
- 25. 将几个oauth帐户链接到单个用户:什么被认为是安全的做法,什么不是?
- 26. 为什么maxConcurrentSessions默认为这样一个低值?什么是安全价值?
- 27. 为什么decimal.Decimal对象不被认为是合理的?
- 28. 为什么OCaml的线程被认为是“不够”?
- 29. 为什么$在cakePHP中被认为是不好的做法?
- 30. 为什么before_save被认为是不好的?
http://stackoverflow.com/questions/2979209/using-fflushstdin – user2485710