- ベストアンサー
複数のファイルへの一括処理(困ってます)
- あるディレクトリ内の全てのファイルに同じ処理をしたいが、手法がわからない。
- 問題は、添付のプログラムで使用しているCSVファイルとその処理方法に関連している。
- 助けていただけると助かります。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
以下のようなコードでカレントディレクトリ内のファイルを列挙できます。 FindFirstFile関数とFindNextFile関数を使います。 カレントディレクトリ以外のディレクトリのファイルを列挙したい場合は、 FindFirstFileの引数でパスを指定するか、SetCurrentDirectory関数でカレントディレクトリを移動すればいいはずです。 これで次々ファイル名が取得できるので、それぞれのファイル名でfopenして計算処理を 行えばいいと思います。 ////////////////////////////////// #include <stdio.h> #include <windows.h> int main(void) { HANDLE hFind; WIN32_FIND_DATA fd; hFind = FindFirstFile("*.csv", &fd); /* カレントディレクトリのファイルを列挙 */ if (hFind == INVALID_HANDLE_VALUE) { fprintf(stderr, "ファイルを取得できません。\n"); return 1; } /* 次々列挙 */ do { //ファイル名の表示 printf("%s\n", fd.cFileName); } while (FindNextFile(hFind, &fd)); /* 開放 */ FindClose(hFind); return 0; } //end of main
その他の回答 (3)
- foobar
- ベストアンサー率44% (1423/3185)
私なら、#2さん回答にあるように、シェルの機能を使うか、標準入力からファイル名を読み取るようにしてパイプを使う(ls *.csv| a.out みたいな感じ)にします。
お礼
ありがとうございます。
- jacta
- ベストアンサー率26% (845/3158)
> あるディレクトリ内の全てのファイル その情報を取得する、処理系に依存しない方法はありません。 処理系を特定してください。
お礼
ありがとうございます。
- Tacosan
- ベストアンサー率23% (3656/15482)
自分だったら「対象のファイル名」を引数にとるプログラムを作り, シェルなりなんなりで回す.
お礼
ありがとうございます。
お礼
ありがとうございます。