用c语言修改文件名
概述
最近在写一个小工具,就拿c语言写工具练练手,由于c语言只提供标准库,在将文件名修改为指定对格式的时候还是要自己手动实现.代码实现
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
/*
*1.去除文件路径 /csharp/mypack.exe => mypack.exe
*2.修改文件名字 mypack.exe => mypack_exe 或者 my-pack.exe => my_pack_exe
*/
char *edit_filename(char *filename);
int main(int argc,char *argv[])
{
for(int i = 1;i < argc;i++)
{
char *filepath = edit_filename(argv[i]);
printf("输出%d文件名:%s\n",i,filepath);
if(filepath != NULL)
{
free(filepath);
}
}
return 0;
}
char *edit_filename(char *filename)
{
int filename_len = (int)strlen(filename); //获取文件(路径)的长度
int index = 0;
for(int i = filename_len - 1;i > 0;i--)
{
//如果文件中有'\\'或者'/',说明是包含路径对
if(filename[i] == '\\' || filename[i] == '/')
{
index = i + 1;
break;
}
}
filename_len = filename_len - index;
int str_size = sizeof(char) * filename_len + 1;
char *tmp_filename = malloc(str_size); //申请一片空间,存放文件名
if(tmp_filename == NULL) //如果失败,则返回NULL
{
return NULL;
}
memset(tmp_filename,0,str_size); //对申请空间进行初始化
for(int i = 0; i < str_size; i++)
{
tmp_filename[i] = filename[index + i];
}
char *out_filename = malloc(str_size); //申请空间,存放处理过对文件名
if(out_filename == NULL)
{
return NULL;
}
memset(out_filename,0,str_size);
for(int i = 0; i < str_size; i++)
{
if(tmp_filename[i] == '.' || tmp_filename[i] == '-')
{
out_filename[i] = '_';
}
else
{
out_filename[i] = tmp_filename[i];
}
}
out_filename[str_size] = '\0'; //字符串结束
if(tmp_filename != NULL)
{
free(tmp_filename);
}
return out_filename;
}
给XCode设置参数

测试结果
秋风
2018-01-18