说明
在文件读取时
,一般是从头读到尾
,但我想读取
文件中间的某部分
的内容时,这样不可取
。
在文件读取时会有一个文件指示器
,通过控制这个指示器
读取文件时指示的位置
,来达到自定义位置
开始读。
获取当前文件指示器 指示 的位置
函数 ftell()
传入打开文件的 FILE 指针
,就返回当前指示器指示的 位置
long int i = ftell(FILE *stream);
移动文件指示器 指示的 位置
函数 fseek()
用于设置文件流的位置指示器
。
#include <stdio.h> ... int fseek(FILE *stream, long int offset, int whence);
参数
- stream:FILE 对象的指针
- offset:指定从
whence
参数的位置起偏移
多少个字节 - whence:
SEEK_SET
: 文件头SEEK_CUR
: 当前的读写位置SEEK_END
: 文件末尾
返回值
- 成功:
- 返回值是 0;
- 失败:
- 非 0 值
fseek(fp,2,SEEK_SET); // 文件头 向后偏移 2 字节 fseek(fp,2,SEEK_CUR); // 当前位置 向后偏移 2 字节 fseek(fp,1,SEEK_END); // 从文件位 向后偏移 1 字节
可移植性问题
对于代码的可移植性,可能还需要考虑一下问题:
- 对于
二进制模式
打开的文件,fseek()
函数在某些操作系统
可能不支持 SEEK_END 位置
- 对于以
文本模式
打开的文件,fseek()
的whence参数 只能 取 SEEK_SET
才是有意义的,并且传递给offset参数
的值要么是0
,要么是上一次
对同一个文件调用ftell()
函数获得的返回值
。
补充
3大系统的换行符:
- Windows 系统:
\r\n
- Mac 系统:
\r
- Linux 系统:
\n
上一篇
【数据结构与算法】概述
【数据结构与算法】概述
版权声明:《 【C语言】文件随机读取 》为明妃原创文章,转载请注明出处!
最后编辑:2021-1-23 07:01:12