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

用_makepath_s,创造的目录是现实存在的还是虚拟的

2012-09-08 
用_makepath_s,创建的目录是现实存在的还是虚拟的?C/C++ codechar path_buffer[_MAX_PATH]char drive[_MA

用_makepath_s,创建的目录是现实存在的还是虚拟的?

C/C++ code
char path_buffer[_MAX_PATH];    char drive[_MAX_DRIVE];    char dir[_MAX_DIR];    char fname[_MAX_FNAME];    char ext[_MAX_EXT];    errno_t err;    err = _makepath_s( path_buffer,_MAX_PATH, "E", "\\sample\\crt\\", "makepath", "c" ); // C4996    // Note: _makepath is deprecated; consider using _makepath_s instead    printf( "Path created with _makepath: %s\n\n", path_buffer );    printf("%d\n",err);    _splitpath_s( path_buffer, drive,_MAX_DRIVE, dir,_MAX_DIR, fname,_MAX_FNAME, ext,_MAX_EXT ); // C4996    // Note: _splitpath is deprecated; consider using _splitpath_s instead    printf( "Path extracted with _splitpath:\n" );    printf( "  Drive: %s\n", drive );    printf( "  Dir: %s\n", dir );    printf( "  Filename: %s\n", fname );    printf( "  Ext: %s\n", ext )
上面是我的测试代码?
但是我上面执行完,从err == 0;我们可以看出已经成功了!但是在现实的我打开E盘找不到所创建的E:\sample\crt\makepath.c,这是怎么回事?

[解决办法]
如果是创建文件夹,用_mkdir();
如果是创建文件,直接用fopen(path,"wb")打开创建,然后fclose()就行;

一下代码,供你参考:
C/C++ code
int TFile::createdir(std::string npath)//创建文件夹{    std::string newstdp=stdpath(npath);    if (stat(newstdp.c_str(),&info)==0)    {        return 0;    }    else    {        createdir(newstdp.substr(0,newstdp.find_last_of('\\')));        if(_mkdir(newstdp.c_str())!=0)        {            return 0;        }    }    return 1;}int TFile::createfile(std::string npath)//创建文件{    std::string newstdp=stdpath(npath);    if (stat(newstdp.c_str(),&info)==0)    {        return 0;    }    createdir(newstdp.substr(0,newstdp.find_last_of('\\')));    FILE* iffop=fopen(newstdp.c_str(),"wb");    if(iffop==NULL)    {        return 0;    }    fclose(iffop);    return 1;}
[解决办法]
MSDN:

Create a path name from components. 

只是driver + dir + filename + ext连接起来, 不创建物理路径和文件
[解决办法]
探讨

1楼我想问的是这个函数_makepath_s !!

热点排行