C语言编程的rename应用的问题

我用vc6.0建立一个mfc程序,我想给我的照片重命名,重命名为该照片文件的时间信息,但是,rename不能正常重命名,我试了,肯定是NewName的问题,我将NewNa... 我用vc6.0建立一个mfc程序,我想给我的照片重命名,重命名为该照片文件的时间信息,但是,rename不能正常重命名,我试了,肯定是NewName的问题,我将NewName所保存的字符串变量替换int i=rename(FileName,NewName)的Newname中,重命名是可以正常工作的。
{
// TODO: Add your command handler code here

CFileFind finder;
struct stat statbuf;
int work=finder.FindFile("*.jpg");//顺序便历所有的图片
FILE *fp=fopen("red.txt","w");
char FileName[100];//存修改前文件名
CString NewName;//存修改后文件名
while(work)//顺序便历所有的图片
{
work=finder.FindNextFile();
sprintf(FileName,"%s",finder.GetFileName());
stat(FileName, &statbuf);
NewName.Format("%s",ctime(&statbuf.st_ctime));//获取文件修改时间信息
NewName.Replace(":","");//删除":"
NewName.Insert(22,".jpg");//加文件类型
NewName.Insert(0,"\"");NewName.Insert(27,"\"");//前后加冒号
fprintf(fp,"%s\n",FileName);//在文件red.txt中保存修改前文件名
fprintf(fp,"%s\n",NewName);//在文件red.txt中保存修改后文件名
int i=rename(FileName,NewName);
system("ren FileName NewName");
fprintf(fp,"%d\n",i);//保存在red.txt中,rename是否执行成功,成功则返回0,不成功返回-1
}
fclose(fp);
}
展开
 我来答
bhtzu
推荐于2016-10-01 · TA获得超过1.1万个赞
知道大有可为答主
回答量:8088
采纳率:85%
帮助的人:4463万
展开全部
int rename(char *oldname, char *newname);

系统函数rename要求参数为char *字符串,你的NewName是一个CString,一般来说,如果工程不是UNICODE模式,那么应该是可以执行的,UNICODE模式下,不可以,因为CString根据工程模式会自动采用WCHAR作为基础字符。

确认一下工程模式吧,如果是UNICODE模式,推荐使用_trename或者_wrename函数,当然,参数类型要统一。

   

追问
我不是专门学软件的,可否提供详细一些吗,谢谢
追答
怎么详细呢?不知道你的工程模式,没法具体明确正确的代码,VC里面的字符串模式都是和UNICODE模式相关的,你使用的CString和CFileFind都是这样。
一般在工程中,至少在同一个函数中,对字符串的操作方法最好统一,你这个,用了char * 又用CString,然后还来回转换,不可取。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式