![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
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 再帰』
・以上。参考にして下さい。
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.1
- 回答日時:
再帰で単純というならこれかな?
http://www.ic-net.or.jp/home/takaken/pz/pz2/page …
ただし、サブディレクトリに再帰を使うのは良いですが、ファイル自体を再帰で処理するのはお勧めできません。すごく処理効率が悪いですよ。
単なるwhileループで処理できると思いますけど。
zwi様>
ご回答ありがとうございました!
お礼が遅くなってしまって申し訳ございません。
サブフォルダだけ…等々の意味が、お教えいただいたサイト等を読んで、ようやく解ってきました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- 英語 再帰代名詞の使用及び不使用条件について 2 2022/10/17 11:28
- Access(アクセス) AccessVBAで降順にするテーブル作成クエリを使用して作成したテーブルを削除し同一のテーブル作成 1 2023/01/06 11:17
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2023/07/21 09:42
- その他(IT・Webサービス) WEBサイト内のファイルを探す方法は? 1 2022/11/11 16:38
- その他(SNS・コミュニケーションサービス) 【至急】Microsoft teamsログインできないループ・・ 3 2023/05/17 13:17
- その他(プログラミング・Web制作) このWEB用語、WEB文章、意味が分かりますか? 理解できない人が多いようなんですが・・・ 7 2022/10/22 09:13
- ASP・SaaS イントラネットを構築したい 2 2022/04/24 11:08
- 仕事術・業務効率化 頼まれてない事を自己判断でやることについて 1 2022/08/12 17:15
- その他(プログラミング・Web制作) パイソン。スクレイピング。Chromeドライバーの使い方を教えてください。 1 2023/06/14 21:55
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2023/08/08 11:02
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ナップザック問題?をエクセル...
-
C言語 再帰処理のメリットとデ...
-
「単体テスト」に関する深刻な...
-
絶対パスの取得について
-
再帰呼び出しを使いますか?
-
再帰処理の考え方について詳く...
-
OpenGLでのコンター表示
-
ノットイコールを教えて下さい
-
Macターミナルで実行中のプログ...
-
緯度、経度の 10進法と 60進法...
-
C言語で、メモリを解放しないで...
-
家電製品の電力周波数を変える機械
-
C言語で途中までしか、プログラ...
-
explorer.exeが異様にメモリを食う
-
C言語 多次元配列(3次元配列)
-
Pythonで仮想通貨の自動売買が...
-
C言語における再帰呼び出しの...
-
イラストレーターCS4のシリアル...
-
SJIS⇔UTF-8の文字コード...
-
並列計算をしたときのシステム...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
DoEvents関数って何?
-
win10で、正確な待ち時間の作り方
-
Excelでのセル内容の高速消去方法
-
小数点を含む数値かどうか判断...
-
Chat GPTに、課題として、二と...
-
SQLの速度をあげるには・・・
-
絶対パスの取得について
-
WebBrowserの読み込み待ちの処...
-
実行時のCPU使用率を増やしたい
-
プログラム上のCPU稼働率低減に...
-
ノットイコールを教えて下さい
-
C言語:関数を使うメリットとデ...
-
Excel(VBA)でSetTimer関数を使...
-
あっち向いてホイのプログラム...
-
VC++2010 GDIオブジェクトの解...
-
If Not c Is Nothing Then ~延...
-
Excel VBA での処理時間計測結...
-
符号付きにすべきか、符号なし...
-
ソートにかかった時間を測りたい。
-
プログラミングの授業でPython...
おすすめ情報