① 如何用c语言重命名
可以通过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)是新名字的路径前缀,因而不能将其删除。
② C语言批量修改文件名
我只是想学个方法,谁也不能否认以后没有可能用不到,想知道怎么用c语言进行文件的批量重命名
③ 如何更改C语言的文件名(如下图)
点击菜单栏上的文件按钮,可以看到另存为,可以把程序文件存成其他的名字。
还有一个方法是,关闭vs,然后找到工程文件夹,找到 练习.c,然后点右键,选择重命名即可。
④ 用C语言编程修改文件名(C++也行)
麻烦在文件名允许有空白和一些与C语言有冲突的特殊符号。
如果没有上述情况可以这样写:
(1)通过位置参数传入 老扩展名 和 新扩展名
void main(int argc, char *argv[]){}
命令行: my_rename.exe jpeg jpg
程序名在 argv[0]里,"jpeg" 在 argv[1]里,jpg 在 argv[2]里了
l2 = strlen(argv[1]); // 老扩展名长度
(2) 通过
char command[120],namelist[]="all.lis";
sprintf(command,"DIR/B/A-D/OD *.%s > %s", argv[1],namelist);
system(command);
取得所有要换名的文件名字列表,存放在all.lis文件里,一个文件名一行。
(3)打开 all.lis 文件,
FILE *flist;
if ( (flist = fopen(namelist,"r") ) == NULL ) {
printf("\007Cann't open work file: %s ", namelist);exit(1);
};
一行一行读入:
char current_file_name[64],new_name[64];
while ( fgets( current_file_name, 64, flist) !=NULL ) { 处理};
(4)while 循环 处理:
strcpy(new_name,current_file_name);
l = strlen(new_name); // 文件名全长
strncpy(&new_name[0]+(l-l2),"\0",1); // 文件基本名,含点号,不含扩展名
strcat(new_name,argv[2]); // 新文件名
sprintf(command,"REN %s %s",current_file_name,new_name); // 换名命令
system(command); // 执行换名
完整程序:
#include <stdio.h>
#include <stdlib.h>
FILE *flist;
void main(int argc,char * argv[])
{
int l,l2;
char command[240],namelist[]="all.lis";
char current_file_name[64],new_name[64];
if(argc < 3) {printf("\007Usage: %s old_ext new_ext\n",argv[0]);
printf("For example: %s jpeg jpg\n",argv[0]);
exit(0);
}
l2 = strlen(argv[1]);
sprintf(command,"DIR/B/A-D/OD *.%s > %s", argv[1],namelist);
system(command);
if ( (flist = fopen(namelist,"r") ) == NULL ) {
printf("\007Cann't open work file: %s ", namelist);exit(1);
};
while ( fgets( current_file_name, 64, flist) !=NULL ) {
strcpy(new_name,current_file_name);
l = strlen(new_name);
strncpy(&new_name[0]+(l-l2-1),"\0",1);
strcat(new_name,argv[2]);
strncpy(¤t_file_name[0]+l-1,"\0",1);
sprintf(command,"REN %s %s", current_file_name, new_name);
system(command);
};
fclose(flist);
exit(0);
}
⑤ 用C语言怎么改文件名
我告诉你一个很简单的方法
你加头文件#include<stdlib.h>
在语句中写system("ren
qq.txt
ww.txt");
如果文件不在程序目录下,就在文件名那里加路径就可以了,但路径中的单斜杠(\)要写成双斜杠(\\);
如system("ren
c:\\qq.txt
ww.txt")
如果你要用字符串来命名文件名。就用这个函数strcat()函数来把字符串接起来就可以了,在、前面加头文件#include<string.h>.
如上面的列子可以这么写:
char
a[10]="ww.txt";//这是你要改成的文件名。
char
b[20]="ren
c:\\qq.txt
";
strcat(b,a);//这里把a、b字符串接起来,经过这里b就等于"ren
c:\\qq.txt
ww.txt";了
。
//下面直接又调用
system(b);//因为字符串b
经过和a连接后就是整个你需要填进的参数了。
⑥ c语言自定义文件名
1.用C语言自定义文件名,涉及到的相关知识如下:
_finddata_t结构体:
struct _finddata_t {
unsigned attrib ;
time_t time_create ;
time_t time_access ;
time_t time_write ;
_fsize_t size ;
char name [260] ;
}
rename函数:
功能描述:
改变文件的名称或者位置,如果目标已存在,将被自动覆盖。
用法:
#include <stdio.h>
int rename(const char *oldpath, const char *newpath);
参数:
oldpath:旧文件名。
newpath:新文件名或者新位置。
返回说明:
成功执行时,返回0。失败返回-1,errno被设为以下的某个值
EACCES:权能不足
EBUSY:参数oldpath或者newpath代表的是目录,而且一些进程正在使用它们
EFAULT: 内存空间不可访问
EINVAL:参数无效
EISDIR:newpath是一个现存的目录,而oldpath不是目录
ELOOP :路径解析的过程中存在太多的符号连接
EMLINK:目录超出允许的最大连接数
ENAMETOOLONG:路径名超出可允许的长度
ENOENT:路径名部分内容表示的目录不存在
ENOMEM: 核心内存不足
ENOSPC: 磁盘配额限制或空间不足
ENOTDIR:路径名的部分内容不是目录
EPERM : 包含路径名的文件系统不支持建立目录
EROFS:文件系统只读
ENOTEMPTY:newpath是一个非空的目录,除了. 和 ..以外,还包含其它入口。
EEXIST:同上
EXDEV:oldpath和newpath不处于同一文件系统
2.用C语言自定义文件名的代码例程如下:
#include<stdio.h>
#include<io.h>
intmain(intargv,char*argc)
{
longhandle;
inti=0,j=0;
struct_finddata_tfileinfo;
charfilePT[256]={'