我正在使用<stdio.h>
和<string.h>
。
fp的文本文件仅包含420.42
fgets(str[0].flo, 7, fp)
有7个字符的字符串“420.42”(4,2,0,。,4,2,\ 0)
当我尝试通过atof()
float flt = 0;
flt = atof(str[0].flo);
flt的值不是420.42;我做错了还是有不同的方式?
答案 0 :(得分:1)
如果您收到0.0000
结果,可能是您在包含列表中省略了stdlib.h
。
即便如此,你会得到类似420.420013
的内容,因为420.42
无法用23位尾数完全表示。
答案 1 :(得分:0)
鉴于您仅包含<stdio.h>
和<string.h>
,但atof()
中已声明<stdlib.h>
,那么您正在做错了。
您没有设置足够的警告进行编译。
您尚未声明atof()
函数,因此您的C编译器假定它返回int
,而不是double
。