pos.dat
文件包含:
1 2 4
1 2 3
1 2 1
1 2 3
我在运行程序时得到segmentation fault
。
#include <stdio.h>
#include <stdlib.h>
int main() {
FILE *fp;
int line = 4, i = 1;
float *x, *y, *z;
fp = fopen("pos.dat", "r");
while (i <= line) {
fscanf(fp, "%f%f%f", &*x, &*y, &*z);
printf(fp, "%f\t%f\t%f\n", *x, *y, *z);
i = i + 1;
}
return 0;
}
答案 0 :(得分:6)
float *x;
声明一个float
指针。然后,当您尝试使用它时,scanf()
将尝试取消对指针的引用,而无需先使用有效地址对其进行初始化。
您要做的是声明float
,而不是float
指针:
float x, y, z;
...
fscanf(fp,"%f%f%f", &x, &y, &z);
...
printf("%f\t%f\t%f\n", x, y, z);