あるディレクトリ内の全てのファイルに同じ処理(添付のプログラムによるtest1.csvファイルに対する処理と同一の処理)をしたいと考えています。
どのようなプログラムを組めば良いのですか?
手法については検討もつかない状況です。
教えていただけないでしょうか?
よろしくお願いいたします。
(1)添付のプログラム
#include <stdio.h>
#include <conio.h>
#include <string.h>
#include <stdlib.h>
int main ()
{
FILE *fp;
char a[50];
double b;
char *p;
if((fp = fopen("test1.csv", "r")) == NULL)
return 0;
while(fscanf(fp, "%s\n", &a) != EOF){
p = strtok( a, "," );
b = atof(a);
printf("%lf ", b);
while(p != NULL)
{
p=strtok(NULL, ",");
if(p != NULL)
{
b = atof(p);
printf("%lf\n", b);
}
getch();
}
}
fclose(fp);
return 0;
}
(2)プログラムで使うCSVファイル
-749.95,1.499894061
-749.9,2.371277071
-749.85,3.01070131
-749.8,-0.92298313
-749.75,3.111961134
-749.7,-1.642278763
-749.65,2.759562723
-749.6,0.869387239
-749.55,1.400240703
-749.5,-0.574988131
-749.45,-2.282041367
-749.4,-1.104953718
-749.35,2.45568825
-749.3,-1.391859875
-749.25,-1.600438736
-749.2,0.116074589
-749.15,2.973864166
-749.1,2.652719198
-749.05,1.584699094
-749,2.129474673
-748.95,1.847275561
-748.9,2.974398019
-748.85,1.561458246
-748.8,2.897905731
-748.75,2.655075544
-748.7,-2.677451989
-748.65,-0.871814301
-748.6,-3.098832888
-748.55,2.565297638
-748.5,-2.073626148
-748.45,-0.300440285
-748.4,0.515248274
-748.35,2.983715685
-748.3,-2.47909508
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
No.4
- 回答日時:
私なら、#2さん回答にあるように、シェルの機能を使うか、標準入力からファイル名を読み取るようにしてパイプを使う(ls *.csv| a.out みたいな感じ)にします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・14歳の自分に衝撃の事実を告げてください
- ・架空の映画のネタバレレビュー
- ・「お昼の放送」の思い出
- ・昨日見た夢を教えて下さい
- ・ちょっと先の未来クイズ第4問
- ・【大喜利】【投稿~10/21(月)】買ったばかりの自転車を分解してひと言
- ・メモのコツを教えてください!
- ・CDの保有枚数を教えてください
- ・ホテルを選ぶとき、これだけは譲れない条件TOP3は?
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・【コナン30周年】嘘でしょ!?と思った○○周年を教えて【ハルヒ20周年】
- ・ハマっている「お菓子」を教えて!
- ・最近、いつ泣きましたか?
- ・夏が終わったと感じる瞬間って、どんな時?
- ・10秒目をつむったら…
- ・人生のプチ美学を教えてください!!
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・都道府県穴埋めゲーム
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
どんなプログラムを書いても指...
-
FTPでputすると空ファイルが出...
-
フルパスから最後のディレクト...
-
windows.hがincludeされない
-
ExcelVBAでカレントディレクト...
-
絶対パスの絶対て英語で何でし...
-
GetPrivateProfileStringでini...
-
「UNCパスはサポートされません...
-
ディレクトリ、ファイルの存在...
-
エクセルVBAで相対パスでファイ...
-
マイクラでPythonのプログラミ...
-
ファイルやディレクトリの存在...
-
セルに入力されたパスでフォル...
-
ネットワーク上のコンピュータ...
-
fopenで別ディレクトリにファイ...
-
C言語を用いたファイルの一括削...
-
フォルダ名をだすには
-
FTPでリモートのファイル一覧取得
-
#include<el.h>って?
-
webアプリケーションでの画像フ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
フルパスから最後のディレクト...
-
FTPでputすると空ファイルが出...
-
どんなプログラムを書いても指...
-
ExcelVBAでカレントディレクト...
-
絶対パスの絶対て英語で何でし...
-
windows.hがincludeされない
-
「UNCパスはサポートされません...
-
ファイルやディレクトリの存在...
-
ネットワーク上のコンピュータ...
-
マイクラでPythonのプログラミ...
-
C言語を用いたファイルの一括削...
-
GetPrivateProfileStringでini...
-
ExcelVBA サーバーの(共有フォ...
-
fopenで別ディレクトリにファイ...
-
セルに入力されたパスでフォル...
-
エクセルVBAで相対パスでファイ...
-
AfxLoadLibrary関数で、DLLのハ...
-
新規作成ファイルパスが有効か...
-
FTPでリモートのファイル一覧取得
-
webアプリケーションでの画像フ...
おすすめ情報