Chinaunix首页 | 论坛 | 博客
  • 博客访问: 768106
  • 博文数量: 199
  • 博客积分: 3584
  • 博客等级: 中校
  • 技术积分: 2193
  • 用 户 组: 普通用户
  • 注册时间: 2008-05-12 21:18
文章分类

全部博文(199)

文章存档

2018年(6)

2013年(14)

2012年(30)

2011年(28)

2010年(24)

2009年(86)

2008年(11)

分类: C/C++

2009-08-30 20:02:32

今晚没事,就想如何用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
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
#include

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);
}

阅读(13642) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~