- ベストアンサー
C言語でCSVファイルを読み込む方法
- C言語を使用してCSVファイルを読み込む方法について詳しく説明します。
- 例えば、4列3行のCSVファイルを読み込み、任意の列・行の数字を任意の場所に読み込むことができるプログラムの作り方を紹介します。
- 具体的なコード例を示しながら、C言語を使用してCSVファイルを処理する方法について解説します。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
「scanf系は使用しない」が推奨されていますが、最も簡単に読み込むなら int a,e,i; float b,c,d,f,g,h,j,k,l; FILE *fp; fp = fopen("test.csv","rt"); fscanf(fp,"%d,%f,%f,%f\n",&a,&b,&c,&d); fscanf(fp,"%d,%f,%f,%f\n",&e,&f,&g,&h); fscanf(fp,"%d,%f,%f,%f\n",&i,&j,&k,&l); fclose(fp); でOK。 なお、上記プログラムは「行数と項目数が固定で、実用にならないほど粗悪なプログラム」なので、実用にするには大変な作業と変更が必要です。 1行の項目数が不定な場合は「1項目だけ読んで、次にどんな文字が現われるか?カンマか?改行か?その他の文字か?」って感じで、動的に処理しなければなりません(そしてそれは、ここでは回答不能なくらいの非常に複雑なプログラムになります)
その他の回答 (2)
- titokani
- ベストアンサー率19% (341/1726)
前回はちょっと間違えました。 これでどうでしょう。 char buf[1024]; double a,b,c,d; double e,f,g,h; double i,j,k,l; fgets(buf,1024,fp); sscanf("%lf , %lf , %lf , %lf",&a,&b,&c,&d); fgets(buf,1024,fp); sscanf("%lf , %lf , %lf , %lf",&e,&f,&g,&h); fgets(buf,1024,fp); sscanf("%lf , %lf , %lf , %lf",&i,&j,&k,&l);
- kopanda116
- ベストアンサー率37% (88/232)
~禁じ手~ カンマで区切られたtes.csvをちょっと加工してしまいます。 加工してもcsvファイルとして問題はありません。 test.csvファイルを任意のエディタで開いて、 カンマ','をスペース' 'に置換してしまえば、プログラムを書くときに、 カンマを気にせずに、読み取ることが出来ます。 windows付属のNotePadとかWordPadだと、Ctrl + h で置換することが出来ます。 カンマで区切られていないと、 ifstreamでファイルストリームを定義して、何も気にせず読むことが出来ます。 ifstream fin("($ファイル名)", ($読み込みモード)); fin >> a >> b >> c >> d; fin >> e >> f >> g >> h; fin >> i >> j >> k >> l; fin.close(); という具合です。