C语言中读取文件时怎么跳过某行

比如说0400000500001D6971这行,我想读了040000050000这些后,就跳到下行,怎么处理?

    可以使用fseek函数,直接偏移指针的指向位置到第二行。

    函数原型

    int fseek(FILE *stream, long offset, int fromwhere);函数设置文件指针stream的位置。如果执行成功,stream将指向以fromwhere为基准,偏移offset(指针偏移量)个字节的位置,函数返回0。如果执行失败(比如offset超过文件自身大小),则不改变stream指向的位置,函数返回一个非0值。

    可以使用fgets函数,遇到需要跳过的行时,直接读取该行并弃舍该行字符值。

    函数原型
    char *fgets(char *buf, int bufsize, FILE *stream);
    参数
    *buf: 字符型指针,指向用来存储所得数据的地址。
    bufsize: 整型数据,指明存储数据的大小。
    *stream: 文件结构体指针,将要读取的文件流。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-10-17
你可以继续读取,不处理就是了,一直读到换行符 \n 。下一个在读就是下一行了
第2个回答  2011-10-17
其后字节数是固定的吗?是的话可以使用fseek(fp,N,1);就是从文件指针fp当前位置往后移动N字节的位置追问

是HEX文件的,每行多少个数据是由前面数据域决定的

追答

那很好做啊
你先一个个字节读取,分别解析他们的含义,然后不需要读的(数据域解析得到-已近读取的数据个数),就用fseek来跳过。
其实我觉得你把后面这些也顺序读一遍,也不花多少时间,除非你这个HEX文件超级大。

相似回答