我有3个文件夹,每个文件夹包含不同的文件名 我想重命名每个文件夹的文件,如下例所示:
folder1 folder 2 folder3
image1.pnm image1.pnm image1.pnm
image2.pnm image2.pnm image2.pnm
..... ..... .....
imageN.pnm imageN.pnm imageN.pnm
void change_all_filename_in_dir(char *dirname)
{
char newname[] = "image";
char extension[] = ".jpg";
DIR *dir;
struct dirent *ent;
int i = 0;
if ((dir = opendir (dirname)) != NULL)
{
while ((ent = readdir (dir)) != NULL)
{
rename(ent->d_name, strcat(strcat(newname, i), extension);
i++;
}
closedir (dir);
}
else
{
printf(" folder not openend");
}
}
答案 0 :(得分:3)
使用rename()
功能。
#include <stdio.h>
int rename(const char *old, const char *new);
描述
重命名功能会导致名称为old指向的字符串的文件 从此以新的指向的字符串给出的名称。该文件名为 旧名称不再可以访问。如果由new指向的字符串命名的文件 在调用重命名函数之前存在,行为是实现定义的。
如果操作成功,则重命名函数返回零,如果失败则返回非零值 如果该文件先前存在,则该文件的原始名称仍为其所知。