日期:2014-05-16  浏览次数:20670 次

mkdir()是创建文件夹的函数,有没有循环创建多个目录级的函数呢?
比如: mkdir("aaa/bbb/ccc/ddd"); 有没有这种,一次性都把这些目录给创建成功的函数呢? 总之,mkdir()貌似不可以这样子创建。只能创一级。

------解决方案--------------------
bash 命令倒是有 -p 参数,网上有人实现了,抄过来:
C/C++ code
int CreateDir(const char *sPathName) 
{ 
    char DirName[256]; 
    strcpy(DirName, sPathName); 
    int i,len = strlen(DirName); 
    if(DirName[len-1]!='/') 
        strcat(DirName, "/"); 

    len = strlen(DirName); 

    for(i=1; i<len; i++) 
    { 
        if(DirName[i]=='/') 
        { 
            DirName[i] = 0; 
            if( access(DirName, NULL)!=0 ) 
            { 
                if(mkdir(DirName, 0755)==-1) 
                { 
                    perror("mkdir error"); 
                    return -1; 
                } 
            } 
            DirName[i] = '/'; 
        } 
    } 

    return 0; 
}

------解决方案--------------------
貌似没有现成的函数,需要自行编写