如何在C语言编程里面修改源文件名字
答案:3 悬赏:60 手机版
解决时间 2021-11-16 23:06
- 提问者网友:凉末
- 2021-11-16 15:50
如何在C语言编程里面修改源文件名字
最佳答案
- 五星知识达人网友:第幾種人
- 2021-11-16 17:25
修改文件名,可要调用操作系统提供的API函数,比如Windows上的MoveFile(),也可以直接调用cmd中已提供的重命名命令——rename。下面的示例代码,调用rename命令来重名命文件名。
#include
#include
#include
int main(int ac, char *pav[])
{
if (ac!=3) {
printf("程序名 要重命名的文件路径 新的文件名
");
printf("示例:test.exe 1.txt 2.txt
");
return 0;
}
if (access(pav[1], 0) !=0) {
printf("不存在该文件
");
return 0;
}
char szcmd[256] = "cmd /c rename ";
strcat(szcmd, pav[1] );
strcat(szcmd, " ");
strcat(szcmd, pav[2]);
system(szcmd);
return 0;
}
全部回答
- 1楼网友:迟山
- 2021-11-16 19:06
我想问下你是在linux环境中运行程序的吗?如果是那样的话非常简单,你在C语言编程的程序里面加这样一条代码:
system("\\cp -r 2013.XXX 2014.XXX");,要注意路径哦,我这个是当前目录下的,如果还不懂可以私聊我。追问Winxp?追答哦,这个也是适用的,你先试试看可以不?追问注意路径具体是什么意思?追答如果不行,还一种是这样的:
你加头文件#include
在语句中写system("ren 2013.XXX 2014.XXX");
如果文件不在程序目录下,就在文件名那里加路径就可以了,但路径中的单斜杠(\)要写成双斜杠(\\);
如system("ren c:\\2013.XXX 2014.XXX")
如果你要用字符串来命名文件名。就用这个函数strcat()函数来把字符串接起来就可以了,在、前面加头文件#include.
如上面的列子可以这么写:
char a[10]="2014.XXX";//这是你要改成的文件名。
char b[20]="ren c:\\2013.XXX ";
strcat(b,a);//这里把a、b字符串接起来,经过这里b就等于"ren c:\\2013.XXX 2014.XXX";了 。
//下面直接又调用
system(b);//因为字符串b 经过和a连接后就是整个你需要填进的参数了。
另外还一种是rename(2013.XXX,2014.XXX);但这种没有路径,你每次都要将他们和你的程序放一起,有限制
system("\\cp -r 2013.XXX 2014.XXX");,要注意路径哦,我这个是当前目录下的,如果还不懂可以私聊我。追问Winxp?追答哦,这个也是适用的,你先试试看可以不?追问注意路径具体是什么意思?追答如果不行,还一种是这样的:
你加头文件#include
在语句中写system("ren 2013.XXX 2014.XXX");
如果文件不在程序目录下,就在文件名那里加路径就可以了,但路径中的单斜杠(\)要写成双斜杠(\\);
如system("ren c:\\2013.XXX 2014.XXX")
如果你要用字符串来命名文件名。就用这个函数strcat()函数来把字符串接起来就可以了,在、前面加头文件#include
如上面的列子可以这么写:
char a[10]="2014.XXX";//这是你要改成的文件名。
char b[20]="ren c:\\2013.XXX ";
strcat(b,a);//这里把a、b字符串接起来,经过这里b就等于"ren c:\\2013.XXX 2014.XXX";了 。
//下面直接又调用
system(b);//因为字符串b 经过和a连接后就是整个你需要填进的参数了。
另外还一种是rename(2013.XXX,2014.XXX);但这种没有路径,你每次都要将他们和你的程序放一起,有限制
- 2楼网友:神的生死簿
- 2021-11-16 18:36
C修改文件名:使用rename函数。
rename函数:功能描述: 改变文件的名称或者位置,如果目标已存在,将被自动覆盖。 用法: #includeint 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 ", 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
rename函数:功能描述: 改变文件的名称或者位置,如果目标已存在,将被自动覆盖。 用法: #include
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 ", 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
希望能帮助到你,你的好评是我前进的动力!谢谢!
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯