私がしなければならないことは、事前に指定された特定のディレクトリとそのサブディレクトリから ".mp3"アーカイブを再帰的に取得することです。 mp3を入手してコンソールに印刷するのに問題はありませんでした。私はhttp://www.gnu.org/software/libc/manual/html_node/Working-with-Directory-Trees.html#Working-with-Directory-Treesに指定されたFTW機能を使用しています、そのコールバック関数は次のようになります。私は本当に何をしたいのかftw関数のディレクトリ検索結果を維持する
/* Call-back of ftw function*/
int filter_mp3s(const char *dir_name, const struct stat *status, int typeflag){
if (typeflag == FTW_D){
struct dirent **mp3list;
int num_archives;
int counter;
num_archives = scandir (dir_name, &mp3list, select_mp3_ext, alphasort);
/* print mp3 names */
if (num_archives > 0) for (counter = 0; counter <= num_archives - 1; counter++) printf("%s\n", mp3list[counter]->d_name);
}
return 0;
}
はGTKコンボボックスのウィジェットにファイルの名前を入れています。問題は、その関数はint型を返し、関数はそのパラメータに柔軟性がないので、何かにエントリを保存できるということです。言い換えれば、mp3が見つかりましたが、私は他の機能のコンボボックスにロードするためにどのように結果を保持できるか分かりません。私はグローバル変数を使用したくない... 私はこれに新しいです、あなたの助けを事前に感謝します。
ありがとうございました...私はscandirを使用していましたが、プロトタイプ以来同じ問題があります。int scandir(const char * dir、struct dirent *** namelist、int(* selector)(const – PALEN
これは顧客の議論もありません...単にグローバル変数を使用するか、または一時ファイルを作成することをお勧めしますか? (二重の投稿のために申し訳ありませんが、誤って押されたEnterキー) – PALEN
私はちょうどopendirし、あなたの関数を再帰的に呼び出すreaddirです。次に、見つかったファイルのリストを渡して独自の拡張マッチングを行い、一致するファイル名をそのリストに入れます。 –