OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 3372|回复: 4

长文件名无用的问题

[复制链接]

7

主题

23

帖子

0

精华

初级会员

Rank: 2

积分
72
金钱
72
注册时间
2014-11-17
在线时间
0 小时
发表于 2015-1-5 12:13:49 | 显示全部楼层 |阅读模式
5金钱
关于文件名的
下面一段程序是寻找文件夹下面的有效文件个数的
    res=f_opendir(&tdir,(const TCHAR*)path); //打开目录
  tfileinfo.lfsize=_MAX_LFN*2+1; //长文件名最大长度
tfileinfo.lfname=mymalloc(SRAMIN,tfileinfo.lfsize); //为长文件缓存区分配内存
if(res==FR_OK&&tfileinfo.lfname!=NULL)
{
while(1)//查询总的有效文件数
{
       res=f_readdir(&tdir,&tfileinfo);       //读取目录下的一个文件
       if(res!=FR_OK||tfileinfo.fname[0]==0)break; //错误了/到末尾了,退出  
      fn=(u8*)(*tfileinfo.lfname?tfileinfo.lfname:tfileinfo.fname);  
res=f_typetell(fn);
if((res&0XF0)==0X40)//取高四位,看看是不是音乐文件
{
rval++;//有效文件数增加1
}    
}  
}
问题就出在红色这两句上,仔细思考不难发现当tfileinfo.fname[0]=0时,寻找结束,*tfileinfo.lfname与tfileinfo.fname[0]表示的意义是一样的
这也就表明实际上长文件名是没有用到的,因为一旦*tfileinfo.lfname等于0 程序还没有执行到这一步就已经结束了,我目前是这样理解的,不知对错
原子哥能解释一下不?

最佳答案

查看完整内容[请看2#楼]

回复【3楼】jermy_z: --------------------------------- 谢谢,已解决,是我把名称弄反了,为什么以前没看出来呢
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

7

主题

23

帖子

0

精华

初级会员

Rank: 2

积分
72
金钱
72
注册时间
2014-11-17
在线时间
0 小时
 楼主| 发表于 2015-1-5 12:13:50 | 显示全部楼层
回复【3楼】jermy_z:
---------------------------------
谢谢,已解决,是我把名称弄反了,为什么以前没看出来呢
回复

使用道具 举报

7

主题

23

帖子

0

精华

初级会员

Rank: 2

积分
72
金钱
72
注册时间
2014-11-17
在线时间
0 小时
 楼主| 发表于 2015-1-5 12:16:21 | 显示全部楼层
还望各位大哥多多提意见
回复

使用道具 举报

70

主题

6697

帖子

0

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
12691
金钱
12691
注册时间
2012-11-26
在线时间
3710 小时
发表于 2015-1-5 12:41:32 | 显示全部楼层
看不明白楼主在表达什么。。。   只能建议  看看while  及 break 的 作用吧  以及 f_readdir  这个函数的作用
学无止境
回复

使用道具 举报

7

主题

23

帖子

0

精华

初级会员

Rank: 2

积分
72
金钱
72
注册时间
2014-11-17
在线时间
0 小时
 楼主| 发表于 2015-1-5 14:48:12 | 显示全部楼层
惭愧在下新手
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-23 09:16

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表