C语言实现文件命名按顺序递增
2013-11-14 23:15
393 查看
最近有一个项目需要将一张图片复制为多个图片,这些图片的区别是文件名里面具有标志性的数字,如下图所示:
以下程序将实现上述功能
以下程序将实现上述功能
#include<stdio.h> #include<string.h> #include<stdlib.h> #include<dirent.h> const char NUM[] = {'0','1','2','3','4','5','6','7','8','9'}; int get_10(int num) { int i, out = 1; if(!num)return 1; else { for(i = 1; i <= num; i++) out *= 10; return out; } } int num_over(int *num_str, int len) { int i, out = 0; for(i = 0; i < len; i++) { out += num_str[i] * get_10(len - i -1); } return out; } int get_num(char *str) { int i, j, k = 0, len; int num[10]; len = strlen(str); for(i = 0; i < len; i++) { for(j = 0; j < strlen(NUM); j++) { if(NUM[j] == str[i]) { num[k++] = j; break; } } } return(num_over(num, k)); } 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() { const char dir[512] = "D:\\work\\工作\\延庆\\已完成\\已交付\\北京市_延庆_格兰山小区\\北京市_延庆_格兰山小区1号楼\\"; const char str[512] = "1号楼"; char filename[512] = {0}, a[10], b[10], *p, name_temp[512] = {0}; char new_name[512] = {0}, old_name [512] = {0}; char tmp[512] = "COPY "; char name_tmp[512] = {0}, str_tmp[512] = {0}; int i, j; DIR *directory_pointer; strcpy(old_name, dir); strcpy(new_name, dir); struct dirent *entry; if((directory_pointer=opendir(dir))==NULL) printf( "Error opening \n "); else { while((entry=readdir(directory_pointer))!=NULL) { if(p = strstr(entry-> d_name, str )) { strcpy(filename, entry-> d_name); break; } } sprintf(a, "%d", get_num(str)); printf("获取起始数:%d\n输入终止数:\n", get_num(str)); scanf("%d",&j); for(i = get_num(str) + 1; i <= j; i++) { sprintf(b, "%d" , i); strcpy(str_tmp, str); change_str(str_tmp, a, b); strcpy(name_temp, filename); strcat(old_name, name_temp); change_str(name_temp, str, str_tmp); strcat(new_name, name_temp); strcat(tmp, old_name); strcat(tmp, " "); strcat(tmp, new_name); printf("%s\n", name_temp); system(tmp); strcpy(tmp, "COPY "); strcpy(b, "\0"); strcpy(str_tmp, "\0"); strcpy(old_name, dir); strcpy(new_name, dir); } closedir(directory_pointer); } }运行结果如下
相关文章推荐
- Ubuntu下C语言实现以子进程号命名的文件及文件夹的新建、删除等操作。
- 递增有序的顺序表表示集合,求解两个集合的交集 并集 差集(c语言实现)
- linux下c语言使用libcurl和实现文件上传
- 线性表的顺序表示(C语言实现)
- C语言实现读目录和文件(转)
- 使用C语言实现从一段pcm格式音频文件中截取一段数据
- (续)顺序表之单循环链表(C语言实现)
- 使用命名空间、头文件和实现文件
- c语言将数据写入文件(用链表实现)
- c语言以字符形式实现文件的读写操作
- 静态顺序表(C语言实现)
- 用C语言实现解析简单配置文件的小工具
- C语言用数组1. 简单约瑟夫环问题: N个人,编号从1~N围成一圈,输入一个数T,从1号开始报数,报到T的人出圈;下一人又从1开始报数,下一个报到T的人出圈,输出出圈顺序。 考虑问实现约瑟夫环问题
- Gulp实现css、js、图片的压缩以及css、js文件的MD5命名
- c语言:利用指针变量,用函数实现将3个整数按从大到小的顺序输出
- ASP 下载时重命名已上传文件的新下载文件名的实现代码
- 文件及文件夹的重命名-- python实现
- FCKeditor实现上传分月目录和文件重命名(C#)
- 以某种格式重命名目录下所有文件(ruby实现)