C / C ++の場合特定のファイルが特定のパス上にあるかどうかを確認する既存の方法はありますか?stat()のように見えるかもしれませんが、ファイル名とパスに追加のパラメーターがある構文を想像します。
pathstat( struct stat stResult, const char* filename, const char* path );
フラグ付きのaccess()
関数を使用すると、ファイルが存在するかどうかがチェックされます。ただし、その前に、関数の入力引数としてファイルパスを渡す前に、ファイルパス(fromおよびvariables)F_OK
を準備する必要があります。filename
path
access()
この回答では、プラットフォームとして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);
}