---这是一道作业题---
我在使用 fscanf 从文本文件中读取浮点值时遇到问题。
基本上我正在尝试从文件中读取浮点值并将它们存储在动态数组中。输入文件每行有两个浮点数。所以一行可能是“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