关于#c语言#的问题:如果运行if语句时(已知if语句在整个while过程肯定只会运行一次),我想记录此时的文件位置(至于落后或超前一个读取长度,后续可以通过fseek函数调整),以便后续使用方便

img


首先说明,fp文件指针读取完整个文件后,里面的if语句肯定只运行一遍

我想的是fp作为文件指针,来读取文件中的数据,当执行if语句时,用fp1用来记录位置,方便后续操作,这是我想的
但是根据以下的运行结果

img


我有点不懂,移动fp1怎么还会和fp文件指针有牵连呢?

希望细讲,
那么,如果运行if语句时(已知if语句在整个while过程肯定只会运行一次),我想记录此时的文件位置(至于落后或超前一个读取长度,这些都无所谓,后续可以通过fseek函数调整),以便后续使用方便(即直接用fread函数,通过fp1来作为定位文件指针位置,直接读取特定位置上的数据),我应该具体怎么操作来记录呢?

记录文件位置如果有多处可以建立全局的long arr[N]数组来保存每次的偏移量,
后续调用可以从数组中读入对应的偏移量,用函数
fseek(fp,arr[i],SEEK_SET);从需要的地方读取。

如果是宽字符版或超大文件
可以用下面函数设置,位置信息会存到fpos_t 指针所指的内存中
int fgetpos(FILE *, fpos_t * );获取位置
int fsetpos(FILE *,fpos_t *);设置位置

由于fp和fp1都是指针变量,fp1=fp实际上都是指向同一个地址的,这时候fp发生变化,fp1肯定也会发生变化的。