大学IT网 - 最懂大学生的IT学习网站! QQ资料交流群:367606806
当前位置:大学IT网 > C技巧 > C语言更改文件名

C语言更改文件名

关键词:C语言更改文件名  阅读(2548) 赞(41)

[摘要]本文主要讲解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不处于同一文件系统

代码如下:

#include<stdio.h>
#include<io.h>

int main(int argv, char *argc)
{
    long handle;
    int i=0, j=0;
    struct _finddata_t fileinfo;
     char filePT[256]={'\0'};
     char fileType[20]={'a','\0'};
    char filePath[256]={'\0'};
    char newName[256]={'\0'};
    char oldName[256]={'\0'};
    
     printf("Input the rename filePath:\n");
     scanf("%s", filePath);
    fflush(stdin);
    printf("Input the rename fileType:\n");
    scanf("%s", fileType);
    fflush(stdin);

    sprintf(filePT, "%s\\*%s",filePath, fileType);
    
    handle = _findfirst(filePT, &fileinfo);
    if(-1 == handle)
    {
        printf("_findfirst() error\n");
        getchar();
        return(-1);
    }
    i=1000;
    do{
        sprintf(oldName, "%s\\%s", filePath, fileinfo.name);//全部路径
        sprintf(newName, "%s\\%d%s", filePath, i++, fileType);
        j=rename(oldName, newName);
        if(j != 0)
        {
             printf("rename() error\n");
             break;
        }
    }while( !_findnext(handle, &fileinfo) );

    _findclose(handle);
    printf("Program End\n");
    getchar();
    return(0);
}



相关评论