ファイルを検索するフォルダーを再帰的にスキャンする、Linux で実行される C プログラムを作成する必要があります。これは可能ですか?私はCの初心者で、これまでのところ何も見つかりませんでした。誰でも私を助けてもらえますか?
1 に答える
Glib を見ることができます。ここで役立つファイル ユーティリティがいくつかあります。
具体的には、ディレクトリ内のすべてのファイルに対して g_dir_open関数を使用できます。この関数がGError**error
ポインターを null 以外に設定する場合は、ファイルを開こうとしています。それ以外の場合は、サブディレクトリに解析しただけです...
コードは次のようになります。
void parse(const gchar *path)
{
GError *error;
GDir *dir = g_dir_open(path, 0, error);
if(error)
{
// this is a file, not a dir, or a dir which could not be opened...
// you can put all the processing for your file here.
}
else
{
gchar *elem;
while(( elem=g_dir_read_name(dir) ))
{
parse(elem);
free(elem);
}
g_dir_close(dir);
}
}
10 個のファイルのフォルダーがあるとします。その場合、解析関数はファイルごとに 1 回、10 回自身を呼び出します。(デバッガーで試してみてください!)
0 回目の解析呼び出し:ディレクトリを開き、while ループに到達し、最初のファイルに対して初めて
parse を呼び出します。 if ブロックの一部。
0 番目の解析呼び出しに戻る: while ループを繰り返し、次のファイルのために 2 回目の解析を呼び出します。2 回目の
解析呼び出し:ファイルをディレクトリとして開くことができないため、関数は if ブロックの最初の部分で終了します。
0 番目の解析呼び出しに戻ります: while ループを繰り返し、次のファイルの 3 回目の解析を呼び出します
...
0 番目の解析呼び出しに戻ります:ディレクトリにファイルがなくなると、ループが終了します。
これは再帰と呼ばれます。