我有一个包含单精度数据的文本文件,例如
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]);
}
我打印的是一个很大的数字,显然是错误的。
谁能解决这个问题?
附:在查看答案后,我已经编辑了问题。
这是我的更多信息:
#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;
}
最佳答案
响应我编写时出现的代码版本...
删除#include <windows.h>
将filename
更改为存在的文件的名称
在继续之前检查file_params != NULL
和delx != NULL
检查fscanf的返回值,例如if ( 1 != fscanf(file_params, "%lf", &delx[i]) ) { printf("fscanf failed\n"); exit(EXIT_FAILURE); }
将printf("%lf",
更改为printf("%f ",
程序有效。
我打印的是一个很大的数字,显然是错误的。
可能是您看到的数字彼此相邻且没有空格(因为您没有在空格上打印),并且没有意识到所看到的。
关于c - 在C中读取单精度使用 double 变量,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24003812/