【发布时间】:2021-11-12 01:56:45
【问题描述】:
在这里,数组指针name[i] 不工作,我不知道如何更改指针或数组以使其工作。没有编译器错误/警告,但控制台终端显示负返回值,printf() 无法正常工作。
此外,输出文件已创建但它是空的:没有写入任何内容。
我猜fscanf() 从文件中获取字符串输入的操作存在一些问题。
#include<stdio.h>
#include<math.h>
int main()
{
FILE *fr, *fw;
fr = fopen("data.txt", "r");
float wt[10], ht[10], bmi[10];
char *name[5];
for(int i = 0; i < 5; i++)
{
fscanf(fr, "%s\t%f\t%f", &name[i], &wt[i], &ht[i]);
bmi[i] = wt[i] / pow(ht[i], 2);
}
printf("%s", name[2]);
fw = fopen("bmi.txt", "w");
for(int j = 0; j < 5; j++)
{
fprintf(fw, "%s\t%f\n", name[j], bmi[j]);
}
fclose(fr);
fclose(fw);
return 0;
}
【问题讨论】:
-
你能给出比“不工作”更详细的描述吗?
-
还有,文件的内容是什么?
-
char* name[5];是一个由 5 个指针组成的数组,每个指针都不指向任何地方。&name[i]也不是指向 char 的指针,而是指向 char 的指针,但 %s 需要指向 char 的指针。你没有收到编译器警告吗? -
您的扫描成功了吗? IE。
fscanf()的返回值(不是扫描的输入)是否如您所愿?你期待什么?