文件定位函数fseek定位到回车符后面一个字符上,却还是能再读出一个回车符?怎么回事?
一个简单的example.txt文件,如下
ab
cd
定义文件指针 FILE *fp=fopen("example.txt","r")
如果连续用 c= fgetc(fp); 读出来的依次会使 a b 回车符 c d
如果我打开文件后,直接用fseek来定位 fseek(fp,3,0);此时文件指针应该是已经越过了回车符指向了c
运行一次 c= fgetc(fp) 读出来的确是回车符,再读一次,出来的才是c
类似的,如果打开文件后用 fseek(fp,4,0);之后c= fgetc(fp),照理说应该读出来的应该是d,但实际上确实c
就好像这个回车符在文件中实际上是连续存了两个似的。
而如果我fseek(fp,2,0); 即直接指向回车符,如果连续用c= fgetc(fp),则读出来又是正常的,即 回车符 c d
谁能解释一下啊,是否文件中看起来一个回车符,但真正存储时是两个回车符?
[解决办法]
或者用16进制编辑器看一下这个文件回车使用什么代表的,是一个0d表示,还是用0d,0a表示的
[解决办法]
那是具体编辑器对“回车”自己的理解,
[解决办法]
sample.txt是什么系统下的文本文件? unix下换行是一个字符0x0a, windows/dos下是两个字符0x0d 0x0a
如果不是unix格式的文本文件,那么偏移3怎么够? 应该fseek(fp, 4, 0) 才能跳过回车换行