初级会员
- 积分
- 72
- 金钱
- 72
- 注册时间
- 2014-11-17
- 在线时间
- 0 小时
|
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:
---------------------------------
谢谢,已解决,是我把名称弄反了,为什么以前没看出来呢
|