0

各行に2つのfloatが含まれ、最初のfloatが行の最初の7文字を占め、2番目のfloatが行の次の7文字を占めるようにフォーマットされたファイルを読み取っているとします。例えば:

  1.111222.222
333.333 44.444

このサンプルコードを考えると

float a, b;
sscanf("  1.111222.222", "%7f%7f", &a, &b);
printf("%f %f\n", a, b);

以下が出力されます。

1.111220 2.222000

空白がスキップされるまで、7文字は最初のフロートに向かってカウントを開始しません。これらのフロートを解析し、フロートの長さの一部として空白を含める方法はありますか?

4

1 に答える 1

1

私が思いついた最善の方法は、フロートを文字列として読み取り、%7[^\n]その入力をフロートとして解析することです。

float a, b;
char a_buff[7 + 1];
char b_buff[7 + 1];
sscanf("  1.111222.222", "%7[^\n]%7[^\n]", a_buff, b_buff);
sscanf(a_buff, "%f", &a);
sscanf(b_buff, "%f", &b);
printf("%f %f\n", a, b);
于 2013-01-08T03:17:19.983 に答える