| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 680 人关注过本帖
标题:读取文件问题
只看楼主 加入收藏
vfdff
Rank: 6Rank: 6
等 级:侠之大者
威 望:8
帖 子:2172
专家分:425
注 册:2005-7-15
结帖率:79.17%
收藏
已结贴  问题点数:10 回复次数:2 
读取文件问题
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 呢?
图片附件: 游客没有浏览图片的权限,请 登录注册

搜索更多相关主题的帖子: 文件 
2009-09-10 22:52
vfdff
Rank: 6Rank: 6
等 级:侠之大者
威 望:8
帖 子:2172
专家分:425
注 册:2005-7-15
收藏
得分:0 
在读取最后一个数据 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)读数据时 文件指针指向下一个位置

~~~~~~~~~~~~~~~好好学习~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2009-09-10 23:15
vfdff
Rank: 6Rank: 6
等 级:侠之大者
威 望:8
帖 子:2172
专家分:425
注 册:2005-7-15
收藏
得分:0 
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


~~~~~~~~~~~~~~~好好学习~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2009-09-10 23:41
快速回复:读取文件问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.012120 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved