C实现文件批量修改

来源:互联网 发布:淘宝新开店铺有扶持吗 编辑:程序博客网 时间:2024/06/14 06:47

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


以下程序实现上述功能,即将一个路径下的所有以_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;}


原创粉丝点击