Cでファイルが存在するかどうかを調べる方法はいくつかあります。特定のパターンに一致するファイルがないかどうかチェックしたいと思います。たとえば、パターンが "lockfile *"で、 "lockfileA"、 "lockfile.txt"、または "lockfile.abc"がチェックに登録されている可能性があります。私がこれをやっているやり方は、opendir()でディレクトリを開き、readdir()を繰り返し実行し、返された各ファイルの名前とパターンを一致させることです。それは動作しますが、私は確かにこれを行うためのよりコンパクトな方法が欲しいです。何か案は?Cでは、パターンに一致する名前のファイルが存在するかどうかを確認します。
答えて
glob(3)(POSIXで標準化されている)を使用できます。あなたはそれにワイルドカードパターンを与え、ファイルシステムを検索して一致するものを探します。
例:
#include <glob.h>
#include <stdio.h>
int main(int argc, char **argv)
{
glob_t globbuf;
if (0==glob(argv[1], 0, NULL, &globbuf)){
char **a=globbuf.gl_pathv;
puts("MATCHES");
for(;*a;a++)
puts(*a);
}
globfree(&globbuf);
}
実行:
./a.out 'lockfile*'
は、あなたのロックファイルを与える必要があります。
ありがとう!良いことを知って:) :)それは本当に悪い効率賢明ではない?すべての場所をチェックしていませんか? –
'lockfile *'は再帰的ルートツリー検索を起動しません。 2時間以内に試合が始まります。冗談だ。もちろん、「すべての場所をチェックする」ことはありません。やってみて。 – PSkocik
hahaはい、どうですか?どのようにfsをマップするので、すべてのディレクトリをチェックする必要はありませんか? –
私の知る限りでは、そうするべきです。ファイルのそれぞれの名前d_name
に対して
、あなたはそれがロックファイルに少なくとも8つの文字、strcmp
8その最初の文字が含まれている場合、それは長さだと確認することができます。
<regex.h>
を使用して確認することもできます。
繰り返しについては、彼が最善の方法だと思います。
ありがとうございます。あなたの答えを受け入れることを試みているが、スタックは私に5分待たなければならないと言っている。忘れてしまったら私に思い出させてください! –
@ PSkocikの[answer](http://stackoverflow.com/a/42680722/451601)をチェックしてください。あなたはあなたの質問にグロブパターンを提供し、彼はあなたに** glob **(3)を指摘しました。 –
- 1. 名前が存在するかどうか確認する
- 2. ファイルが存在するかどうかを確認します
- 3. ファイル名が既に存在するかどうかを確認する方法?
- 4. C/C++ - Mac OS X - ファイルが存在するかどうかを確認する
- 5. vimスクリプトで検索パターンが一致するかどうかを確認する
- 6. ユーザー名が存在するかどうかを確認し、パスワードが一致するかどうかも確認してください
- 7. cでダウンロードを開始する前に、SharePointにドキュメントが存在するかどうかを確認します。
- 8. 画像ファイル名が存在するかどうかを確認する
- 9. ユーザ名が存在するかどうかを確認
- 10. enumがパターンと一致しないかどうかを確認する方法?
- 11. スイフト、ファイアベース。名前が既に存在するかどうかを確認することはできません
- 12. エンティティの名前が存在するかどうかを確認するUpsertRequestを実行できますか?
- 13. ユーザー名が存在するかどうかAjaxで確認します。
- 14. C#UWP XAMLがXAMLに存在するかどうかを確認します。
- 15. Powershellはファイルが存在するかどうかを確認します
- 16. Mod_rewriteは、PHPファイルが存在するかどうかを確認します。
- 17. ファイルがアンドロイドリソースに存在するかどうかを確認します - Android
- 18. 値が存在するかどうかを確認します
- 19. ファイルが存在するかどうかを確認し、Windowsのコマンドラインを使用して名前を変更
- 20. Matlabにファイルが存在するかどうかを確認するには?
- 21. XMLタグがファイルに存在するかどうかを確認するには?
- 22. ファイルがPythonに存在するかどうかを確認するには?
- 23. PHP:ファイルが存在するかどうかを確認しますか?
- 24. は、MdiChildrenが存在するかどうかを確認するために、C#
- 25. 部分的な名前のサーバにファイルが存在するかどうか確認してください
- 26. ファイルがエラーなく存在するかどうかを確認するには?
- 27. C#プロセスが存在するかどうかを確認して閉じます
- 28. C++にbmpファイルが存在するか確認する
- 29. ベクトルをループして同じ名前のdata.framesが存在するかどうかを確認します
- 30. ファンクションヘッドに一致するパターンがあるかどうかを確認しますか?
これはそれがどのように行われているのですか、ボブ –
@ammoQありがとうございました! –
ワイルドカードは、シェルファイル検索ユーティリティで使用されます。それができる方法の1つは、リダイレクトされた出力を持つシェルにそのようなコマンドを渡し、それが作成したファイルを分析することです。しかし、それについて行くのは恐ろしい方法です。 –