前提・実現したいこと
C言語で<stdio.h>のfscanf()関数を使って、CSVファイルの内容を読み込みたいのですが、意図しない結果となってしまいます。
発生している問題・エラーメッセージ
CSVファイルの中身は
"comma.csv"
test,10,11,1.1,1.2
test,20,21,2.1,2.2
test,30,31,3.1,3
と記述したのですが、後述のコードを実行したときにこのような結果が得られました。
CSVファイルと同じ記述を標準出力に表示するにはどのようにすればよいのでしょうか?
実行結果
・ソtest 10 11 1.1 1.2
test 20 21 2.1 2.2
test 30 31 3.1 3.2
30 31 3.1 3.2
続行するには何かキーを押してください . . .
該当のソースコード
C
1#include <stdio.h> 2 3int main(void) 4{ 5 FILE *fp; 6 char *fname = "comma.csv"; 7 char s[16]; 8 int ret, n1, n2; 9 float f1, f2; 10 11 fp = fopen(fname, "r"); 12 if (fp == NULL) 13 { 14 printf("%sファイルが開けません\n", fname); 15 return -1; 16 } 17 18 while ((ret = fscanf(fp, "%[^,],%d,%d,%f,%f", s, &n1, &n2, &f1, &f2)) != EOF) 19 { 20 printf("%s %d %d %.1f %.1f\n", s, n1, n2, f1, f2); 21 } 22 23 fclose(fp); 24 return 0; 25}
試したこと
ファイル操作については初心者であるため、コードを書く以外に試したことはありません。
開発環境
Visual Stdio 2015
補足情報(FW/ツールのバージョンなど)
今回はネットに掲載されていたコードを写経していたために、fscanf()関数を用いていますが、もし他の方法をご存じでしたら参考までに教えていただけると幸いです。
回答3件
あなたの回答
tips
プレビュー
下記のような回答は推奨されていません。
このような回答には修正を依頼しましょう。
2019/06/07 07:35
2019/06/07 13:33