c语言,ftell()函数在文本模式和二进制模式下是怎么工作的呢

Python016

c语言,ftell()函数在文本模式和二进制模式下是怎么工作的呢,第1张

在文本模式下ftell会自动处理换行符,在UNIX,MSDOS,MAC这三个系统对换行符的定义是不一样的:

UNIX: "\n"

MSDOS: "\r\n"

MAC: "\r"

在文本模式下,假如是在windows系统下"\r\n"会当成一个字符, 而在二进制模式下"\r\n"会忽略操作系统对特殊字符的定义,识别为'\r'和'\n'两个字符。所以ftell返回的偏移量会有所不同。

rewind就是把当前文件指针移动到文件开始,fseek文件定位,ftell返回文件当前指针

如rewind(fp)fp为文件指针意思是把指针回到文件开始;fseek(fp,nL,1)这个有三种情况0表示文件开始,1表示当前位置,2表示文件末尾,nL表示指针位移量可以为负;ftell(fp)返回文件当前的指针

\n输出到文件实际上是 0D 0A 占2个字节

程序写入文件的字节是

31 20 32 20 33 0D 0A 34 20 35 20 35 0D 0A 共14个字节

第一次读入的时候 读入1 空格 2

文件指针移过3个字节 31 20 32

第二次读入的时候 读入 空格 3 换行 4

文件指针移过了5个字节

20 33 0D 0A 34

第三次读入的时候 读入 空格 5 空格 6

文件指针移过4个字节

20 35 20 36