stract()函数问题,请大神帮助。

2019-07-20 23:38发布

我想利用FATFS将SD(“0:”)卡根目录里的文件拷贝到U盘(“2:”)根目录里,下面是我的函数和调试结果,拷贝不过去,感觉是stract()函数问题,请大神帮助。

//拷贝函数
//path1:源文件路径
//path2:目标路径
//mode: 0,不覆盖源文件;1,覆盖源文件
//返回值:执行结果
u8 MY_copy(u8 * path1,u8 * path2,u8 mode)
{
        FRESULT res;          
    char *fn;   /* This function is assuming non-Unicode cfg. */
        u8 *dstpathname=0; //目标文件夹路径+文件名
        u8 *srcpathname=0; //源文件夹路径+文件名
        srcpathname = path1;
        dstpathname = path2;
       
       
#if _USE_LFN
        fileinfo.lfsize = _MAX_LFN * 2 + 1;
        fileinfo.lfname = mymalloc(SRAMIN,fileinfo.lfsize);
#endif                  

    res = f_opendir(&dir,(const TCHAR*)path1); //打开一个源文件目录
    if (res == FR_OK)
        {       
                printf(" ");
                while(1)
                {
                res = f_readdir(&dir, &fileinfo);                   //读取目录下的一个文件
                if (res != FR_OK || fileinfo.fname[0] == 0) break;  //错误了/到末尾了,退出
                //if (fileinfo.fname[0] == '.') continue;             //忽略上级目录
#if _USE_LFN
                fn = *fileinfo.lfname ? fileinfo.lfname : fileinfo.fname;
#else                                                          
                fn = fileinfo.fname;
#endif                                                      /* It is a file. */
                        printf("源文件路径:%s/", path1);//打印路径       
                        printf("%s ",  fn);//打印文件名
                        printf("目标文件路径:%s/", path2);//打印路径       
                        printf("%s ",  fn);//打印文件名

                        strcat((char*)srcpathname,(const char*)"/");//源文件路径加斜杠
                        strcat((char*)dstpathname,(const char*)"/"); //目标路径加斜杠
                       
                        strcat((char*)srcpathname,(const char*)fn);//源文件路径
                        strcat((char*)dstpathname,(const char*)fn);//目标路径
                       
                        if(mode==0)mf_copy(srcpathname,dstpathname,0);//拷贝文件不覆盖源文件
                        else if(mode==1)mf_copy(srcpathname,dstpathname,1);//拷贝文件覆盖源文件
                       
                        printf("拷贝后源文件路径:%s ",  srcpathname);//打印文件名
                        printf("拷贝后目标文件路径%s ",  dstpathname);//打印文件名
                }
    }          
        myfree(SRAMIN,fileinfo.lfname);       
        return res;
}



调试的结果是如图所示:
调试结果图片.jpg
感觉像是stract()函数没起作用,并没有将文件路径和文件名拼接在一起,为什么呢?

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
2条回答
wcyingdream
1楼-- · 2019-07-20 23:50
你没有为srcpathname和dstpathname申请内存吧,你看看是不是这的问题
鬼舞判官
2楼-- · 2019-07-21 03:10
wcyingdream 发表于 2016-2-29 11:39
你没有为srcpathname和dstpathname申请内存吧,你看看是不是这的问题

有可能,我可以试试,3Q

一周热门 更多>