创建多级路径

来源:互联网 发布:上瘾网络剧百度云资源 编辑:程序博客网 时间:2024/06/05 05:37

 由于linux只有创建单级路径的库函数(如果有创建多级路径的库函数,麻烦通知在下),参考了网上的一些代码,觉得它们都有不足之处,遂整合完善之,以示下文,如有还有不足之处,还请指正,多谢合作!


#include <stdio.h>#include <unistd.h>#include <errno.h>#include <string.h>#include <stdlib.h>int mk_multy_dir(const char *muldir);int main(){    char *dir = "./hello/log/"; //在当前目录下再建一个两级目录.    mk_multy_dir(dir);    return 0;}/*  * 功能:创建多级路径,只创建文件的路径,并不包含创建文件. *      若路径已存在则直接返回,否则一级一级地创建出多级路径。 * 参数:muldir,要创建的多级目录字符串,可以是相对路径或绝对路径。 * 返回值:成功返回0,失败为-1.*/int mk_multy_dir(const char *muldir){    int i=0,len=0;    char dirstr[1024]={0}; if( NULL == muldir ){  return -1; }     if (access(muldir, F_OK)==0) {     return 0;        }    memset(dirstr, 0, sizeof(dirstr));    strcpy(dirstr, muldir);    len = strlen(dirstr);    if (dirstr[len-1] != '/') {     strcat(dirstr, "/");     len++;    }        if (dirstr[0] == '/') {     i++;       }     while (i<len)  {        if (dirstr[i] == '/')   {            dirstr[i] = '\0';            //判断此目录是否存在,不存在则创建            if (access(dirstr, F_OK) != 0) {                if (mkdir(dirstr, 0775)!=0) {                 return -1;                }                         }            dirstr[i]='/';        }        i++;    }     return 0;}



结果:

在当前目录下再建一个两级目录:./hello/log/得意



原创粉丝点击