• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:複数のファイルへの一括処理(困ってます))

複数のファイルへの一括処理(困ってます)

このQ&Aのポイント
  • あるディレクトリ内の全てのファイルに同じ処理をしたいが、手法がわからない。
  • 問題は、添付のプログラムで使用しているCSVファイルとその処理方法に関連している。
  • 助けていただけると助かります。

質問者が選んだベストアンサー

  • ベストアンサー
  • semisemi
  • ベストアンサー率72% (8/11)
回答No.1

以下のようなコードでカレントディレクトリ内のファイルを列挙できます。 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

saterain20
質問者

お礼

ありがとうございます。

その他の回答 (3)

  • foobar
  • ベストアンサー率44% (1423/3185)
回答No.4

私なら、#2さん回答にあるように、シェルの機能を使うか、標準入力からファイル名を読み取るようにしてパイプを使う(ls *.csv| a.out みたいな感じ)にします。

saterain20
質問者

お礼

ありがとうございます。

  • jacta
  • ベストアンサー率26% (845/3158)
回答No.3

> あるディレクトリ内の全てのファイル その情報を取得する、処理系に依存しない方法はありません。 処理系を特定してください。

saterain20
質問者

お礼

ありがとうございます。

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.2

自分だったら「対象のファイル名」を引数にとるプログラムを作り, シェルなりなんなりで回す.

saterain20
質問者

お礼

ありがとうございます。