0

ファイル(入力)がCのプログラムのディレクトリにあるかどうかを確認するにはどうすればよいですか?最初はファイルを開くだけでいいと思いますが、のような入力で他のファイルを表示したくない../important_dir/important_fileのですが、ユーザーがのようなことをしても大丈夫かもしれません./dir1/../file1。つまり、ファイルが現在のディレクトリ(子ディレクトリなし)にある限り、それを開いても問題ありません。

次に、検索しreaddirて、現在のディレクトリ内のすべてを検索するために使用できるを見つけましたが、それでも、現在のディレクトリに多数のファイルがある場合、ユーザー入力を取得するたびにファイル名を検索するには遅すぎます。

それを行うための高速で安全な方法はありますか?

4

2 に答える 2

1

私は realpath が仕事をするべきだと思います。可能であれば、解決策を明日投稿します。

于 2013-03-13T09:11:42.180 に答える
0

stat()ファイルのステータスを確認するために使用できます。問題のファイルが存在せず、に設定されている場合、-1 が返されerrnoますENOENT

char filename[] = "myfile";

struct stat s = {0};

if (!(stat(filename, &s)
{
  if (ENOENT == errno)
    perror("file does not exist.");
}
于 2013-03-13T07:49:26.847 に答える