我已经写了一个函数来重命名目录中的文件,以便它们以数字顺序命名。不幸的是,这个函数似乎丢掉了一些文件并重新命名了一些文件。可能,我不明白readdir()和rename()后面的逻辑。任何人都可以帮忙,这里是我的代码的摘录;readdir()如何与rename()一起使用?
while(((entry->readdir(dirp))!=NULL)
{
strcpy(t1_string,entry->d_name);
exception1=strcmp(entry->d_name,".");
exception2=strcmp(entry->d_name,"..");
exception3=strcmp(entry->d_name,".svn");
if((exception1!=0)&&(exception2!=0)&&(exception3!=0))
{
token2=strchr(t1_string,'.'); //extension part
num_files++;
if(num_files%4==1)
utt++;
sprintf(utt_n,"%d",utt);
strcpy(newfilename, utt_s); //utt_s is a constant string
strcat(newfilename,utt_n);
strcat(newfilename,token2);
rename(entry->d_name,newfilename);
}
} //End of the while loop
用'printf(“mv -i%s%s \ n”,entry-> d_name,newfilename)替换'rename(entry-> d_name,newfilename);''end看看它试图做什么。然后:运行创建的脚本。 – joop
所需的新名称是所需的顺序,但旧名称以紊乱的方式出现,没有观察到顺序。让我寻找另一种方式来做到这一点。 – user4898148
用单个snprintf()替换一堆strcat(),并确保newfilename足够大。 – joop