scanf とそれが実際にどのように機能するかを理解するのに苦労しています。次のテキストファイルがあります。
this is a test !
25.0 400.0 400.0 0.0 0.0
20.0 200.0 400.0 3.0 4.0
30.0 50 600.0 1 .0 2.0
50.0 400.0 200.0 1 .0 -2.0
40.0 700.0 700.0 -1 .0 -2.0
基本的に、コードは各行を読み取り、それらを個々の配列に割り当てることになっています (配列 A は最初の列から浮動小数点数を取得し、配列 B は 2 番目の列から浮動小数点数を取得するなど)。私が理解できた唯一のことは、読み取り用にファイルを開く方法です。
FILE *file = fopen( argv[1], "r" );
しかし、1行目、2行目、3行目、4行目からdoubleを抽出する方法がわかりません。ちなみに、条件ステートメントを使用して1行目をスキップしました。そして、私は次のように残りを読みました:
while (fgets(line, sizeof(line), file))
{
if (count < 1)
{
//printf("%s", line);
count++;
}
else
{
printf("%s", line);
}
}
行は印刷されていますが、繰り返します...個々の番号を抽出する方法がわかりません。助けていただければ幸いです。
編集:選択されたソリューション
このテスト アプリケーションで使用したコードを次に示します。回答で述べたように、テキスト ファイルにはタイプミスがあり、データのスキャンが難しくなり、コードを実行する前に編集する必要があります。また、配列を操作するには、「int i = 0」の宣言を追加する必要があります。
while (fgets(line, sizeof(line), file))
{
if( 5 == sscanf(line, "%f%f%f%f%f", &A[i], &B[i], &C[i], &D[i], &E[i]) )
{
i++;
}
else
{
printf( "Parse failed\n" );
}
}