我有一个包含单精度数据的文本文件,例如
0.123456 0.123456 0.123456
我想使用以下语法在C中阅读它:
FILE *myfile.
double c[4];
int i=0;
c[0]=1;
myfile=fopen(...)
for (i=1;i<=3;i++) {
fscanf(myfile, "%lf", &c[i]);
}
我打印的是一个很大的数字,显然是错误的。 任何人都可以解决这个问题吗?
Ps:我在查看答案后编辑了我的问题。 这是我的更多信息:
#include <windows.h>
#include <stdio.h>
#include <math.h>
#include <string.h>
#include <stdlib.h>
FILE *file_params;
int main() {
double *delx;
int i;
file_params=fopen(filename,"r");
delx = (double *) malloc ((4)*sizeof(double));
delx[0]=0;
for(i=1; i<=3; i++) fscanf(file_params, "%lf", &delx[i]);
for(i=1; i<=3; i++) printf("%lf", delx[i]);
return 0;
}
答案 0 :(得分:1)
数组索引从0开始。您从1开始。
答案 1 :(得分:1)
for
循环应该是
for (i=0;i<3;i++)
fscanf(myfile,"%lf",&c[i]);
答案 2 :(得分:1)
我看到以下错误:
使用%lf
代替lf%
。
使用&c[i]
代替&c
。
在for循环中,使用
for (i=0;i<3;i++) {
而不是
for (i=1;i<=3;i++) {
总之,
for (i=0;i<3;i++) {
fscanf(myfile, "%lf", &c[i]);
}
答案 3 :(得分:1)
响应我写的代码版本......
#include <windows.h>
filename
更改为存在的文件的名称file_params != NULL
和delx != NULL
if ( 1 != fscanf(file_params, "%lf", &delx[i]) ) { printf("fscanf failed\n"); exit(EXIT_FAILURE); }
printf("%lf",
更改为printf("%f ",
计划有效。
我打印的是一个很大的数字,显然是错误的。
可能你看到的数字彼此相邻而没有空格(因为你没有打印空间)并且没有意识到你所看到的。