C语言如何实现传入一个文件名,保持后缀不变,递增文件名
时间: 2023-06-14 18:03:13 浏览: 140
读取bmp图片的类,实例化传入文件名即可
可以通过以下的C语言代码实现:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(int argc, char *argv[]) {
if (argc != 2) {
printf("Usage: %s filename\n", argv[0]);
return 1;
}
char *filename = argv[1];
char *ext = strrchr(filename, '.'); // 获取文件后缀
if (ext == NULL) {
printf("%s does not have an extension\n", filename);
return 1;
}
int len_ext = strlen(ext);
char *prefix = strndup(filename, strlen(filename)-len_ext); // 获取文件名前缀
int count = 0;
FILE *fp = NULL;
char temp[1024];
do {
sprintf(temp, "%s_%03d%s", prefix, count++, ext); // 拼接新的文件名
fp = fopen(temp, "rb");
} while (fp != NULL);
fclose(fp);
free(prefix);
printf("New filename: %s\n", temp);
return 0;
}
```
执行该程序时,命令行参数需要传入要修改的文件名,如下所示:
```sh
./a.out file.txt
```
程序会根据传入的文件名,将文件重命名为类似“file_001.txt”这样的格式。如果有多个文件存在,程序会按照递增的方式对文件进行重命名,直到新生成的文件名不再重复。
阅读全文