No.1
- 回答日時:
再帰で単純というならこれかな?
http://www.ic-net.or.jp/home/takaken/pz/pz2/page …
ただし、サブディレクトリに再帰を使うのは良いですが、ファイル自体を再帰で処理するのはお勧めできません。すごく処理効率が悪いですよ。
単なるwhileループで処理できると思いますけど。
zwi様>
ご回答ありがとうございました!
お礼が遅くなってしまって申し訳ございません。
サブフォルダだけ…等々の意味が、お教えいただいたサイト等を読んで、ようやく解ってきました。
No.2
- 回答日時:
★アドバイス
>「再帰」についての概念のかかれたサイトは高度な内容ばかりで…
↑
そんなに高度ですか?
多分は『再帰処理』の概念がもてないだけでしょう。
あるいはサンプルばかりで実用的な再帰処理を記述したことがないか。
>「再帰」について、噛み砕いた説明のあるサイトをご存知の方はおられますでしょうか?
↑
『c 再帰処理』キーワードでネット検索したら直ぐに下のサイトが見つかりました。
http://homepage2.nifty.com/sak/w_sak3/doc/syspc/ …→『再帰呼び出し処理 - ディレクトリ検索』
お探しの再帰処理でのディレクトリ検索です。
ただし、ちょっと分かりづらい気がしますね。
>再帰処理でフォルダ内のファイルを全検索するプログラミングを作成するために、色々と調査をしております。
↑
私なら次のように全ファイルの検索を行います。
やっぱり再帰処理ですけど。
サンプル:
// カレント・ディレクトリの再帰検索
VOID findListSubdir( LPTSTR lpPath )
{
WIN32_FIND_DATA fdFile;
HANDLE hFind;
LPTSTR lpWild;
lpWild = PathAddBackslash( lpPath );
lstrcpy( lpWild, TEXT("*.*") );
if ( (hFind = FindFirstFile(lpPath,&fdFile)) != INVALID_HANDLE_VALUE ){
do {
if ( fdFile.cFileName[0] != '.' ){
if ( fdFile.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY ){
lstrcpy( lpWild, fdFile.cFileName );
findListSubdir( lpPath ); // 再帰呼び出し
/*
fdFile.cFileNameにフォルダ名
lpPathにフォルダのフルパス名
*/
}
else{
lstrcpy( lpWild, fdFile.cFileName );
/*
fdFile.cFileNameにファイル名
lpPathにファイルのフルパス名
*/
}
}
} while ( FindNextFile(hFind,&fdFile) );
FindClose( hFind );
}
lpWild[ -1 ] = '\0';
}
使い方:
int main( void )
{
TCHAR szPath[ MAX_PATH ] = TEXT("C:\\");
findListSubdir( szPath )
return 0;
}
その他:
・上記のサンプルでは C:\ の配下のディレクトリをすべて検索しています。
表示は printf 文などがないので検索のみです。
必要に応じて printf 文を記述すれば全ファイルを検索表示されます。
記述場所はコメントの部分で『fdFile.cFileName』か『lpPath』を表示するようにします。
・以上。
Oh-Orange様>
ご回答が遅くなり、大変申し訳ございませんでした。
事例もありがとうございました!
中々、イメージが掴めなくて、色々なURL読んで漸く、どういうことか解ってきました。
本当に助かりました。
No.3ベストアンサー
- 回答日時:
★追記。
・C言語ですが分かりやすそうなサイトを発見しましたので紹介します。
http://itpro.nikkeibp.co.jp/article/COLUMN/20061 …→『第7回 再帰処理と参照渡し(モドキ)のメリット・デメリット』
http://www.geocities.jp/ky_webid/c/056.html→『C言語編 第56章 再帰呼び出し』
http://www1.cts.ne.jp/~clab/Contents/Recindex.html→『言語講座:関数の再帰呼出し』
http://www4.plala.or.jp/tamo/algo/09recursive.pdf→『データ構造・アルゴリズム No.09 再帰』
・以上。参考にして下さい。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
C言語 再帰処理のメリットとデ...
-
DoEvents関数って何?
-
基本情報技術者試験詳しい方へ...
-
VBでのシューティングゲーム
-
非同期プログラミングは必ずマ...
-
抜け落ちた番号を取得する方法...
-
If Not c Is Nothing Then ~延...
-
Macターミナルで実行中のプログ...
-
「ヒープサイズの設定」て何?
-
HTA(HTMLアプリケーション)にて...
-
StrConvの使い方について教えて...
-
C# シリアル通信でデータ受信...
-
ADOでアクセスのレコードに...
-
Arduino nano(アルドゥイーノ ...
-
マイコンからプログラムを読み...
-
分を時間に変換するプログラム
-
Excel VBA で処理中断(DoEvents...
-
プログラム実行中に強制終了
-
どうやってパソコンなどの凄い...
-
世界一美しいソースコード
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excelでのセル内容の高速消去方法
-
win10で、正確な待ち時間の作り方
-
DoEvents関数って何?
-
小数点を含む数値かどうか判断...
-
SQLの速度をあげるには・・・
-
ナップザック問題?をエクセル...
-
Excel VBAにて、2GB超の点群デ...
-
Excel(VBA)でSetTimer関数を使...
-
If Not c Is Nothing Then ~延...
-
ノットイコールを教えて下さい
-
基本情報技術者試験詳しい方へ...
-
絶対パスの取得について
-
Excel VBA データ削除の高速化
-
C言語で、文字とか入力されなく...
-
WebBrowserの読み込み待ちの処...
-
プログラム上のCPU稼働率低減に...
-
Excel VBA での処理時間計測結...
-
C言語 時刻差分の算出方法
-
.netからexcel操作の処理速度が...
-
WindowsMessage(ウィンドウメッ...
おすすめ情報