C实现文件批量修改

最近有一个项目需要将同一张图片命名为2个文件,一个以_G结尾,另一个以_W结尾,如下图所示:

20131114230002062

以下程序实现上述功能,即将一个路径下的所有以_G结尾的jpg文件复制成对应的以_W结尾的同类型的文件

#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<dirent.h>
void change_str(char *str, char *a, char *b)
{
    char *p, q[100] = {0};
    p = strstr(str, a);
    p += strlen(a);
    strcpy(q, p);
    *(p - strlen(a)) = 0;
    strcat(str, b);
    strcat(str, q);
}
int main(int axianggc, char *argv[])
{
    const char dir[512] = "D:\\work\\工作\\三区\\work\\北京市_三区_有色冶金设计研究院\\北京市_三区_有色冶金设计研究院19号楼\\";
    char *filename;
    char new_name[128] = {0}, old_name[128] = {0};
    char name_temp[128] = {0}, tmp[512] = "COPY ";
    DIR *directory_pointer;
    struct dirent *entry;
    strcpy(new_name, dir);
    strcpy(old_name, dir);
    if((directory_pointer=opendir(dir))==NULL)
        printf( "Error opening \n ");
    else
    {
        while((entry = readdir(directory_pointer)) != NULL)
        {
            if(filename = strstr(entry-> d_name, "G.jpg"))
            {
                strcpy(name_temp, entry -> d_name);
                change_str(name_temp, "G.jpg", "W.jpg");
                strcat(old_name, entry -> d_name);
                strcat(new_name, name_temp);
                strcat(tmp, dir);
                strcat(tmp, old_name);
                strcat(tmp, " ");
                strcat(tmp, dir);
                strcat(tmp, new_name);
                printf("%s\n", new_name);
                system(tmp);
            }
            strcpy(new_name, "\0");
            strcpy(old_name, "\0");
            strcpy(tmp, "COPY ");
        }
        closedir(directory_pointer);
    }
  system("PAUSE");
 return 0;
}

转载于:https://my.oschina.net/u/1397402/blog/295459

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值