使用C代码

时间:2015-07-01 08:36:30

标签: c

我有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");
    }
}

1 个答案:

答案 0 :(得分:3)

使用rename()功能。

#include <stdio.h>
int rename(const char *old, const char *new);
  

描述

     

重命名功能会导致名称为old指向的字符串的文件   从此以新的指向的字符串给出的名称。该文件名为   旧名称不再可以访问。如果由new指向的字符串命名的文件   在调用重命名函数之前存在,行为是实现定义的。

     

如果操作成功,则重命名函数返回零,如果失败则返回非零值   如果该文件先前存在,则该文件的原始名称仍为其所知。