Matlab R2016a从入门到精通 (CAX工程应用丛书)
上QQ阅读APP看书,第一时间看更新

3.4 读写位置控制

在读写数据时,操作系统默认总是按顺序从磁盘文件的开始向后地在磁盘空间进行读写数据操作。

操作系统通过一个文件指针来指示当前的文件位置,有时需要专门的函数来控制和移动文件指针,达到随机访问磁盘文件的目的;MATLAB提供了这样的函数,如表3.1所示。

表3.1 控制文件内位置指针的函数

常用的几个函数说明如下。

1.feof

feof用于检测指针是否在文件结束位置,其语法格式为:

    feof(fid)

如果文件标识为fid文件的末尾指示值已被设置,则此命令返回1;否则返回0。

2.fseek

fseek用于设定指针位置,其语法格式为:

    status=fseek(fid, offset, origin)

其中,fid是文件标识;offset是偏移量,以字节为单位,可以为整数(表示要往文件末尾方向移动指针)、0(不移动指针位置)或负数(表示往文件起始方向移动指针); origin是基准点,可以是‘bof'(文件的起始位置)、‘cof'(指针的目前位置)或‘eof'(文件的末尾),也可以用-1、0或1来表示。

如果返回值status为0表示操作成功,返回-1表示操作失败。

3.ftell

ftell用于返回现在的位置指针,其语法格式为:

    position=ftell(fid)

返回值position是距离文件起始位置的字节数,如果返回-1则说明操作失败。

4.frewind

frewind用于将指针返回到文件开始,语法格式为:

    frewind(fid)

例3-9,读写位置控制。

在命令行窗口中输入:

    a=[1:6];                                              %创建数组
    fid1=fopen('pc.bin', 'w')
    fwrite(fid1, a, 'short');                             %写入文件
    status=fclose(fid1);                                  %关闭文件
    fid2=fopen('pc.bin ', 'r')
    data=fread(fid2, 'short'); data= data'                %读取文件
    eof=feof(fid2);                                       %判断检测指针是否在文件结束位置
    frewind(fid2);                                        %将指针返回到文件开始
    status=fseek(fid2,3,0);                               %设定指针位置
    position=ftell(fid2);                                 %于返回现在的位置指针

输出结果如下:

    fid1 =     11
    fid2 =     11
    data =      1      2      3      4      5      6