关于文件名的
下面一段程序是寻找文件夹下面的有效文件个数的
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 程序还没有执行到这一步就已经结束了,我目前是这样理解的,不知对错
原子哥能解释一下不?
2019-4-15 10:38:49
谢谢,已解决,是我把名称弄反了,为什么以前没看出来呢
谢谢,已解决,是我把名称弄反了,为什么以前没看出来呢
举报
2019-4-15 11:06:42
看不明白楼主在表达什么。。。 只能建议 看看while 及 break 的 作用吧 以及 f_readdir 这个函数的作用
看不明白楼主在表达什么。。。 只能建议 看看while 及 break 的 作用吧 以及 f_readdir 这个函数的作用
举报