1

C / C ++の場合特定のファイルが特定のパス上にあるかどうかを確認する既存の方法はありますか?stat()のように見えるかもしれませんが、ファイル名とパスに追加のパラメーターがある構文を想像します。

pathstat( struct stat stResult, const char* filename, const char* path );
4

1 に答える 1

1

フラグ付きのaccess()関数を使用すると、ファイルが存在するかどうかがチェックされます。ただし、その前に、関数の入力引数としてファイルパスを渡す前に、ファイルパス(fromおよびvariables)F_OKを準備する必要があります。filenamepathaccess()

この回答では、プラットフォームとしてLinuxを使用していると想定しています

void pathstat( struct stat stResult, const char* filename, const char* path )
    char *file;
    int path_len;

    if (!filename) {
        // set error in the stResult
        return;
    }

    path_len = path ? strlen(path) : 0;

    file = malloc((strlen(filename) + path_len + 2) * sizeof(char));
    // PREPARE THE FILE PATH
    if (path && path[0] && path[path_len-1]=='/')
        sprintf(file,"%s%s",path,filename);
    else if (path && path[0])
        sprintf(file,"%s/%s",path,filename);
    else
        file = strcpy(file,filename);

    //NOW CHECK IF THE FILE PATH EXIST WITH ACCESS
    if (access(file, F_OK) != -1) {
        //file exist
    } else {
        // file does not exxit
    }
    free(file);
}
于 2013-01-09T16:12:11.137 に答える