使用C语言在Linux系统中递归创建多级目录
为了在Linux系统中使用C语言递归创建多级目录,需要包含以下头文件:
#include
#include
#include// 提供access()函数
#include// 提供mkdir()函数
接下来定义一个函数createMultiLevelDir,该函数接受一个字符串参数sPathName,表示要创建的目录路径。
int createMultiLevelDir(const char* sPathName) {
char DirName[256];
int i, len = strlen(sPathName);
// 确保路径以斜杠结束
if (sPathName[len - 1] != '/') {
strncpy(DirName, sPathName, len);
DirName[len] = '/';
DirName[len + 1] = '\0';
len++;
} else {
strcpy(DirName, sPathName);
}
// 遍历路径中的每个字符
for (i = 0; iif (DirName[i] == '/') {
DirName[i] = '\0';
// 如果目录不存在,则创建它
if (access(DirName, F_OK) != 0) {
if (mkdir(DirName, 0777) == -1) {
perror("创建目录失败");
return -1;
}
}
// 恢复斜杠字符
DirName[i] = '/';
}
}
return 0;
}
在main函数中调用上述函数,测试创建多级目录的功能:
int main() {
const char* multi_level_dir = "/home/user/path/to/directory";
if (createMultiLevelDir(multi_level_dir) == -1) {
perror("创建多级目录失败");
return -1;
}
printf("目录 '%s' 创建成功!\n", multi_level_dir);
return 0;
}
注意,如果将源文件命名为createMultiLevelDir.cpp并尝试用gcc编译,可能会遇到__gxx_personality_v0编译错误。这是因为文件扩展名与代码语法不符(例如,使用了C语言的语法却选择了.cpp作为文件扩展名)。正确的做法应该是确保文件扩展名为.c,并且使用gcc进行编译。