我有一个包含单精度数据的文本文件,例如

 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 != NULLdelx != 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/

10-09 02:13