请教文件操作的问题
我使用fread读取文件内容,fread(a,sizeof(a),1,fp);,之后我想退回读取前的位置,就使用fseek(fp,-1*(long)(sizeof(a)),SEEK_CUR);,后来发现读取文件有问题,之后我使用ftell发现,除了第一次读取之后退回,之后所有的读取退回的操作,都无法退回原点。比如
程序代码:
printf("%ld\n",ftell(fp)); fread(a,sizeof(a),1,fp); printf("%ld\n",ftell(fp)); fseek(fp,-1*(long)(sizeof(a)),SEEK_CUR); printf("%ld\n",ftell(fp)); fread(b,sizeof(b),1,fp); printf("%ld\n",ftell(fp)); fseek(fp,-1*(long)(sizeof(b)),SEEK_CUR); printf("%ld\n",ftell(fp)); fread(c,sizeof(c),1,fp); printf("%ld\n",ftell(fp)); fseek(fp,-1*(long)(sizeof(c)),SEEK_CUR);
整个过程就是读取a,退回a那么大的距离,读取b,退回b那么大的距离,读取c,退回c那么大的距离,之后循环操作。
但是ftell告诉我,它却是这么操作的:
开始-位置0;
读取a-位置7;
退回-位置0;
读取b-位置9;
退回-位置1;
读取c-位置11;
退回-位置2
………………………………之后循环后,就连读取a,都无法退回原位置了,位置就是0、1、2、3、4、5………………
唔…………为什么啊,怎么弄啊?