嵌入式学习小组
直播中

刘丰标

7年用户 1058经验值
私信 关注

长文件名没有用

关于文件名的
下面一段程序是寻找文件夹下面的有效文件个数的
    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 程序还没有执行到这一步就已经结束了,我目前是这样理解的,不知对错
原子哥能解释一下不?

回帖(4)

刘红

2019-4-15 10:38:49
谢谢,已解决,是我把名称弄反了,为什么以前没看出来呢
举报

陈科生

2019-4-15 10:56:31
还望各位大哥多多提意见
举报

李维奇

2019-4-15 11:06:42
看不明白楼主在表达什么。。。   只能建议  看看while  及 break 的 作用吧  以及 f_readdir  这个函数的作用
举报

吕聪

2019-4-15 11:16:01
惭愧在下新手
举报

更多回帖

发帖
×
20
完善资料,
赚取积分