我正在从一个txt文件读取一个结构数组。示例txt:
-4.5 -1 0 0
4.0 1 0 0
8 0 1 2
12.1 0 -6 1
-3.2 2.5 -3.0 4
每行的4个值对应于结构中的4个值。该文件最多可包含100行(MAX定义为100行)。使用以下代码,我试图将每一行存储到struct数组的相应索引中,然后打印:
FILE *fileName = NULL;
typedef struct chargeData_struct {
double Q, x, y, z;
} ChargeData;
ChargeData values[MAX], *p = values;
fileName = fopen("charge2.txt", "r");
if (fileName == NULL)
{
printf("ERROR: Could not open file.");
}
int k = 0;
while (fscanf(fileName, "%lf %lf %lf %lf", &p[k].Q, &p[k].x, &p[k].y, &p[k].z) != EOF);
{
printf("%f %f %f %f\n", p[k].Q, p[k].x, p[k].y, p[k].z);
k++;
}
fclose(fileName);
但是,只打印txt文件的最后一行。是否每次都覆盖struct数组的相同索引?
答案 0 :(得分:0)
你正在使用额外的分号,这就麻烦了,在这里:
while (fscanf(...) != EOF);
{
...
删除它,你应该没事。
您的代码会发生什么while(..);
等同于此:
while(...)
{
; // do nothing
}
因此不会进入你的循环体(你认为是身体)(因为实际的身体什么都不做)。但是scanf()
继续解析文件,然后代码的这一部分执行:
{
printf("%f %f %f %f\n", p[k].Q, p[k].x, p[k].y, p[k].z);
k++;
}
独立地,花括号被视为他们想要陈述范围。
答案 1 :(得分:0)
override