1. 程式人生 > >【轉】實現新建多級目錄(樹形)linux-c語言

【轉】實現新建多級目錄(樹形)linux-c語言

#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;
}