注册 登录
编程论坛 Matlab

读取文件问题

vfdff 发布于 2009-09-10 22:52, 680 次点击
clear all
clc

arrayCount = 0;
fid = fopen('magic5.dat','rb');
while ~feof(fid)
    arrayCount = arrayCount + 1
    arrayBufa(arrayCount) = fread(fid,1,'uint8=>uint8',0)
end
fclose(fid);
arrayCount

使用上面的程序读取文件,为什么arrayBufa得到了正确的 16 个数据,而arrayCount得值却是 17 而不是 16 呢?
只有本站会员才能查看附件,请 登录

2 回复
#2
vfdff2009-09-10 23:15
在读取最后一个数据 arrayCount = 16 arrayBufa(arrayCount) = fread(fid,1,'uint8=>uint8',0)后,
fid指向了最后一个元素,也就是此时fid并没有指向文件尾,因此 ~feof(fid) true,arrayCount = arrayCount + 1得到17
但是这时 arrayBufa(arrayCount) = fread(fid,1,'uint8=>uint8',0)读数据时 文件指针指向下一个位置
#3
vfdff2009-09-10 23:41
clear all
clc

arrayCount = 0;
fid = fopen('magic5.dat','rb');
while ~feof(fid)
    [row_array,ele_count] = fread(fid,512,'uint8=>uint8')
    arrayBufa(arrayCount+1:arrayCount+ele_count) = row_array';
    arrayCount = arrayCount + ele_count;
    if ele_count < 512          % elecount < 512代表数据不够,已经到了文件的结尾
        break ;
    end
end
fclose(fid);
arrayCount

1