首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

C++资料重命名失败

2013-08-16 
C++文件重命名失败我是想把一个文件夹下所有文件按照一个格式命名,可为什么我这段代码不能正确的重命名文

C++文件重命名失败
我是想把一个文件夹下所有文件按照一个格式命名,可为什么我这段代码不能正确的重命名文件?运行没什么错误,可就是没效果,就是rename没正确运行,或者说我没写对,有人能帮我解答一下吗?今天晚上就得搞定,大家帮帮忙啊……

#include<iostream>
#include<io.h>
using namespace std;


void main()
{
string newname = "image_disciple_";
//ar newname[30] = "image_disciple_";
int num = 1099;
//string lujing = "C:\\Users\\carol\\Documents\\Tencent Files\\189654842\\FileRecv\\test\";
    
_finddata_t file;
    long lf;
    if((lf = _findfirst("C:\\Users\\carol\\Documents\\Tencent Files\\189654842\\FileRecv\\调整尺寸PNG\\*.*", &file))==-1l)//_findfirst返回的是long型; long __cdecl _findfirst(const char *, struct _finddata_t *)
        cout<<"文件没有找到!\n";
    else
    {
        cout<<"\n文件列表:\n";
        while( _findnext( lf, &file ) == 0 )//int __cdecl _findnext(long, struct _finddata_t *);如果找到下个文件的名字成功的话就返回0,否则返回-1
        {

char cnum[4] = "";
            cout<<file.name<< "  ";
            
++num;
itoa(num,cnum,10);
newname += cnum;
newname += ".png";
int c = rename(file.name,newname.c_str());//这里貌似一直失败,为什么啊?是函数用法不对吗?
if (c==0)
cout<<"succeed!";
cout<<newname.c_str();
newname = "image_disciple_";
            cout<<endl;

        }
    }
    _findclose(lf);
system("pause");
}
C++ rename
[解决办法]
我用着这个不错,不知道楼主用的什么工具。

http://www.boost.org/doc/libs/1_54_0/libs/filesystem/doc/reference.html


[解决办法]


//这里换成一个char NewfileName[]; 
//用strcpy函数拷贝试试
newname += cnum;             
newname += ".png";  
int c = rename(file.name,newname.c_str());           
//rename函数调用换下
int c = rename(file.name,NewfileName);
if (c != 0)
   printf("rename failed!\n");


这样试试先,看能不能解决,
[解决办法]
什么叫貌似失败? 如果失败, GetLastError(); 看看错误码

也许需要一个绝对路径。。。

std::string prefix("C:\\Users\\carol\\Documents\\Tencent Files\\189654842\\FileRecv\\调整尺寸PNG\");

std::string oldname(prefix);
oldname += file.name;

std::string newname(prefix);
newname += "image_disciple_";
newname += cnum;
newname += ".png";


[解决办法]
引用:

//这里换成一个char NewfileName[]; 
//用strcpy函数拷贝试试
newname += cnum;             
newname += ".png";  
int c = rename(file.name,newname.c_str());           
//rename函数调用换下
int c = rename(file.name,NewfileName);
if (c != 0)
   printf("rename failed!\n");


这样试试先,看能不能解决,


上面补充一点 都需要绝对路径的


if (c != 0)
   printf("rename failed c =%d!\n", c);


看看错误返回多少
这个 有错误码说明:
http://msdn.microsoft.com/zh-cn/magazine/608h8bda(VS.90).aspx
[解决办法]
引用:
我改成绝对路径也试过,还是没用

GetLastError()的返回值是什么?
[解决办法]
上面我的代码可能也有问题。。 同个目录下怕会死循环
[解决办法]
引用:
Quote: 引用:

Quote: 引用:

我改成绝对路径也试过,还是没用

GetLastError()的返回值是什么?

你这个好像也是vb,我那个不是vb啊


你用的是C语言,平台是windows,
GetLastError() 在 "windows.h"里面
也是C接口啊... 

if (c != 0)
   int err_code = GetLastError();
然后,网上搜下这个错误码 (VS工具里的Lookup也可以)

热点排行