【转】实现新建多级目录(树形)linux-c语言

来源:互联网 发布:java调用c语言 编辑:程序博客网 时间:2024/05/29 09:44
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include <unistd.h>
#include<sys/stat.h>
int CreateDir(const char *sPathName);
int main() {
char *dir="/test1/test2/";
CreateDir(dir);
return 0;
}
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;
/*  功 能: 确定文件的访问权限,检查某个文件的存取方式,比如说是只读方式、只写方式等。如果指定的存取方式有效,则函数返回0,
* 否则函数返回-1
用 法: int access(const char *filename, int amode); */
if (access(DirName, 0) != 0) {
/*int mkdir(const char *path)mkdir函数的第一个参数是目录名,第二个参数则指定了文件的模式
* 后面参数的值包括三位八进制,每一个数字指定不同用户对该文件的权限,第一个数字代表文件所有者的权限,
* 第二个数字代表指定组(group)的权限,第三个数字指定其他所有人的权限(public)。
其中,每一个数字包含三种权限:read,write,exec,他们权限值为4,2,1,
三个值想加就是某个用户对某个文件的权限!例如:如果允许自己有read,write ,exec,
本组人员有read,exec,其他人员仅有read 权限,则可以把mode设定为751*/
if (mkdir(DirName, 0755) == -1) {
perror("mkdir error");
return -1;
}
}
DirName[i] = '/';
}
}

return 0;
}
原创粉丝点击