修改文件名,可要调用 *** 作系统提供的API函数,比如Windows上的MoveFile(),也可以直接调用cmd中已提供的重命名命令——rename。下面的示例代码,调用rename命令来重名命文件名。
#include <stdio.h>#include <stdlib.h>
#include <string.h>
int main(int ac, char *pav[])
{
if (ac!=3) {
printf("程序名 要重命名的文件路径 新的文件名\n")
printf("示例:test.exe 1.txt 2.txt\n")
return 0
}
if (access(pav[1], 0) !=0) {
printf("不存在该文件\n")
return 0
}
char szcmd[256] = "cmd /c rename "
strcat(szcmd, pav[1] )
strcat(szcmd, " ")
strcat(szcmd, pav[2])
system(szcmd)
return 0
}
C修改文件名:使用rename函数。rename函数:功能描述: 改变文件的名称或者位置,如果目标已存在,将被自动覆盖。 用法: #include <stdio.h>int rename(const char *oldpath, const char *newpath)参数:
oldpath:旧文件名。 newpath:新文件名或者新位置。
具体可以分以下2种情况:
1、修改单个文件
直接使用rename即可。
2、批量修改文件(如:按一定规则修改某目录下所有文件)
需要使用opendir遍历目录,然后修改该目录下文件。下面提供一个简单的例子。
void ModFilesName(const char *pcszPath)
{
char szPathFile[1024] = {0} //路径+文件名
DIR *dir_p
struct dirent *direntp
struct stat entryInfo
//文件目录不存在,则创建
if(stat(pcszPath, &entryInfo) < 0)
{
printf("Auto create folder:%s\n", pcszPath)
mkdir(pcszPath, 0755)
}
if ((dir_p = opendir (pcszPath)) == NULL)
{
return
}
while ((direntp = readdir (dir_p)) != NULL)
{
//组合完整路径
sprintf(szPathFile, "%s/%s", pcszPath, direntp->d_name)
//判断文件是否是目录
if(lstat(szPathFile, &entryInfo) == 0)
{
if(S_ISDIR(entryInfo.st_mode))
{
continue //忽略目录
}
rename(szPathFile, 你要修改成的文件名)
}
} // while ( ...
closedir (dir_p)
}
推荐一片文章:http://blog.chinaunix.net/uid-7525568-id-251530.html
希望能帮助到你,你的好评是我前进的动力!谢谢!
可以通过C库函数rename实现。
头文件:stdio.h
原型::int rename(char *oldname, char *newname)
功能: 给一个文件重命名,从原始的oldname改成新名字newname。如果oldname和newname带有路径,且所在文件夹不同,那么用该函数可以实现文件移动功能。删除成功返回0,否则返回-1。
使用rename需要注意:
一、重命名文件:
如果newname指定的文件存在,则会被覆盖。
如果newname与oldname不在一个目录下,则相当于移动文件。
二、重命名目录:
如果oldname和oldname都为目录,则重命名目录。
如果newname指定的目录存在且为空目录,则先将newname删除。
对于newname和oldname两个目录,调用进程必须有写权限。
重命名目录时,newname不能包含oldname作为其路径前缀。例如,不能将/usr更名为/usr/foo/testdir,因为老名字( /usr/foo)是新名字的路径前缀,因而不能将其删除。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)