我正在从K& R手册中学习C.我知道(并读取)fopen
呼叫中的'b'表示二进制访问。然后,本书接着说,这种(二进制访问)在UNIX系统上毫无意义。
推断是它在Windows上有意义。
我的问题是,为什么Windows在文本和二进制文件之间进行区分,而UNIX则不然。另外,区别是什么?
我找到了一些接近回答它的东西,但仍然不能让我满意:
Is there any difference between text and binary mode in file access?
http://perlmaven.com/what-is-a-text-file
提前致谢。
答案 0 :(得分:2)
传统的Windows系统具有不同的文本和二进制文件表示。文本文件具有文件结束标记(^ -Z标记),因此如果在文本模式下打开它,则无法读取该字符,IO层只会检测到它并返回到您在文件末尾。在二进制模式下,它的行为类似于Unix系统。
Unix不关心文件内容,也不提供这样的语义。在Unix上,文件结束,只是尝试读取超过流长度的东西。这就是为什么文本或二进制模式在Unix世界中无关紧要,任何字符都可以出现在任何类型的常规文件中。