如何使用sprintf追加字符串?

2019-07-21 03:30发布

本帖最后由 vegetablebird 于 2019-4-4 16:43 编辑

想在循环中使用sprintf追加字符串,但是每次只显示最后一次的结果。网上查了一下,sprintf每次都会在结尾加上'',导致覆盖前一次的内容。现在需要遍历SD卡一个文件夹内所以文件名,并追加到一个字符串,而不是每查一个文件名就发送一次,请问应该怎么做?
[mw_shl_code=c,true]u8 mf_scan_files(u8 * path)
{        
        FRESULT res;
                char *p;
    char *fn;   /* This function is assuming non-Unicode cfg. */
                char *fnn;
#if _USE_LFN
         fileinfo.lfsize = _MAX_LFN * 2 + 1;
        fileinfo.lfname = mymalloc(SRAMIN,fileinfo.lfsize);
#endif                  

    res = f_opendir(&dir,(const TCHAR*)path); //′ò¿aò»¸öĿ¼
    if (res == FR_OK)
        {        
                while(1)
                {
                res = f_readdir(&dir, &fileinfo);                   //¶áè¡Ä¿Â¼ÏÂμÄò»¸öÎļt
                if (res != FR_OK || fileinfo.fname[0] == 0) break;  //′íÎóáË/μ½Ä©Î2áË,íË3ö
                //if (fileinfo.fname[0] == '.') continue;             //oöÂÔéϼ¶Ä¿Â¼
#if _USE_LFN
                fn = *fileinfo.lfname ? fileinfo.lfname : fileinfo.fname;
#else                                                           
                fn = fileinfo.fname;
#endif                                                      /* It is a file. */
                        printf("%s/", path);//′òó¡Â·¾¶        
                        printf("%s ",fn);//′òó¡ÎļtÃû                 
                        p=mymalloc(SRAMIN,32);                                                        //éêÇë32×Ö½úÄú′æ
                        sprintf((char*)p,"%s",fn);
                        u3_printf(fn);
                }
               
  }         
        
        myfree(SRAMIN,fileinfo.lfname);
        myfree(SRAMIN,p);
    return res;         
}[/mw_shl_code]
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。