关于文件结束符EOF
文本方式和二进制方式的最大区别在于文本方式对于''\n''换行符的理解不同
(1)在DOS平台下,该字符会被展开成<CR>< LF>两个控制字符(相当于"\r\n"),在ASCII字符集下是 0DH,0AH
(2)在UNIX平台下,仅仅是<LF>,不会展开。
(3)在二进制方式下,不管是什么平台,''\n''都是精确的<LF>。
关于EOF:
EOF可以作为文本文件的结束标志,但不能作为二进制文件的结束符.feof函数既可以判断二进制文件,又可以判断文本文件.
在windows下,以文本方式写入文件的\n会被转换为\r\n(也就是0x0D0A),而在读入的时候,\r\n会被转换回\n,还以内码为26(0x1A)的字符(也称
Ctrl+Z(
^z))也作为文件结束符。
在linux/unix 系统上,只有一种文件类型的系统,带b字母的模式和对应的不带b字母的模式是相同的(UNIX文本文件通常不包含Ctrl+Z和\r)。