---これは宿題の質問です---
fscanf を使用してテキスト ファイルから float 値を読み取る際に問題が発生しています。
基本的に、ファイルから float 値を読み取り、それらを動的配列に格納しようとしています。入力ファイルには、1 行に 2 つの float があります。したがって、行は「0.85 7.34」(引用符なし)の場合があります。だから私は fscanf(fp, "%f %f", &coordinates[i], &coordinates[i++]) を使用して2つの浮動小数点値を読み取ろうとしています。印刷すると0.00000と表示されます。以下は、私が書いたコードとそれが生成する出力です。
#include <stdio.h>
#include <stdlib.h>
int main (int argc, char *argv []) {
FILE * fp = fopen("nums", "r");
float *coordinates;
float *tmp;
int i = 0;
int ARRAY_SIZE = 5;
coordinates = malloc(5*sizeof(float));
while (fscanf(fp,"%f %f", &coordinates[i], &coordinates[i++]) > 1)
{
printf("iteration# %d | coord1 = %f coord2 = %f \n", i, &coordinates[i-1], &coordinates[i]);
if (i >= ARRAY_SIZE)
{
tmp = realloc(coordinates, (i*2)*sizeof(float));
coordinates = tmp;
ARRAY_SIZE = i*2;
}
i++;
}
for(i = 0; i < 8; i++)
printf("%f\n", &coordinates[i]);
return 0;
}
出力:
iteration# 1 | coord1 = 0.000000 coord2 = 0.000000
iteration# 3 | coord1 = 0.000000 coord2 = 0.000000
iteration# 5 | coord1 = 0.000000 coord2 = 0.000000
iteration# 7 | coord1 = 0.000000 coord2 = 0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000