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

与えられたパスの有効性を確認する最善の方法は、そのパスで操作を試すことです。OS からエラー コード (または何か) が返されます。これを使用して、エラーが発生errnoGetLastError()なかった理由を判断できます。

于 2013-08-21T12:34:04.923 に答える
0

基盤となる OS に検証を実行させます。

ディレクトリを作成し、エラーコードを確認してください。

于 2013-08-21T12:34:18.127 に答える
0

Linuxは「/」を使用して特定のパス内のディレクトリを区切りますが、Windowsは「\」を使用し、さらにほとんどすべてのWindowsパスはorで始まりますC:\\D:\\最も重要なものは重要ではありません)ので、 a を使用して探す:ことができますstrchr()それらの記号またはperror()はるかに簡単な方を使用できます(含める必要があります<errno.h>

于 2013-08-21T13:08:37.417 に答える