我有一个C函数,它接受目录路径作为字符串。该函数在给定路径上创建一个目录。
int create_directory(const char *path) {
// given path may be absolute or relative
// step 1:-need to validate the given path(cross platform for both Linux and windows)
// what are the criteria for path validation?
// step 2:- check permission about user accessibility ,means can not create directory, if path is like /usr/bin or /root).but in root login then we create.
So what are the criteria for validation?
// step 3:-if directory, subdirectory already exist at the path, then return?
// step 4:-if not exists then create directory ;
}
基本上我在步骤1和步骤2中遇到问题。我无法确定路径验证的确切标准是什么。
答案 0 :(得分:3)
检查给定路径的有效性的最佳方法是尝试使用它进行操作。操作系统会为您提供错误代码(errno
或GetLastError()
或其他内容),您可以使用它来确定无法执行此操作的原因。
答案 1 :(得分:0)
我会让底层操作系统执行验证。
创建目录,然后检查错误代码。
答案 2 :(得分:0)
Linux使用“/”分隔给定路径中的目录,而Windows使用“\”加上几乎所有的窗口路径都以C:\\
或(D:\\
开头,它们无关紧要重要的是:
)所以你可以使用strchr()
来查找这些标志,或者你可以使用perror()
这样更容易(你必须包括<errno.h>
})