1

我有一个接受目录路径作为字符串的 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 步中遇到问题。我无法确定路径验证的确切标准是什么。

4

3 回答 3

3

检查给定路径的有效性的最佳方法是尝试使用它进行操作。操作系统会给你一个错误代码(errnoGetLastError()其他东西),你可以用它来确定为什么它不可能。

于 2013-08-21T12:34:04.923 回答
0

Linux 使用“/”分隔给定路径中的目录,而 windows 使用“\”加上几乎所有 windows 路径都以C:\\ or 开头(D:\\没关系,最重要的是:)所以你可以只使用 astrchr()来查找那些标志,或者你可以使用perror()更容易的(你必须包括<errno.h>

于 2013-08-21T13:08:37.417 回答
0

我会让底层操作系统执行验证。

创建目录,然后检查错误代码。

于 2013-08-21T12:34:18.127 回答