我如何为float和double进行fscanf,因为我在单精度(float)中声明了一次全局精度,在double precision(double)中声明了一次...所以当我运行它时,我必须每次都更改它我转换为其他类型
in double(%lf) 单(%f)
fscanf(fp1,"%lf", &a[i][j]);
那么有一种方法适用于两者而且不需要每次都改变它吗?
答案 0 :(得分:3)
因为我在C中进行任何编码已经有一段时间了,所以你可能想通过实验来确认,但是所有单精度浮点数都是有效的双精度浮点数,所以你可以使用'%lf'在fscanf中,存储到临时双精度浮点数,然后使用逻辑将其分配给正确的变量。
或者,如果您正在使用" #define" s,您可以执行以下操作:
#define USE_DOUBLE
#ifdef USE_DOUBLE
#define STORTYPE double
#define SCANSTRING "%lf"
#else
#define STORTYPE float
#define SCANSTRING "%f"
#endif
...
STORTYPE a[x][y];
fscanf(fp1,SCANSTRING, &a[i][j]);