double を読み取る sscanf() 関数に問題があります。次のようなカンマ区切りのテキスト ファイルがあります。
ABC,DEF,0.465798,0.754314
GHI,JKL,0.784613,0.135264
MNO,OPQ,0.489614,0.745812
etc.
最初に fgets() で行を取得し、次に sscanf() を使用して 2 つの文字列と 2 つの double 変数を取得します。
fgets(buffer, 28, file);
sscanf(buffer, "%4[^,],%4[^,],%lf[^,],%lf[^\n]", string1, string2, &double1, &double2);
printf("%s %s %f %f\n", string1, string2, double1, double2);
しかし、出力は次のとおりです。
ABC DEF 0.465798 0.000000
GHI JKL 0.784613 0.000000
MNO OPQ 0.489614 0.000000
そのため、どういうわけか最後のフロートをスキャンしません。試してみまし%lf[^ \t\n\r\v\f,]
た%lf
が、まだ機能しません。