我知道strtod()
和atof()
函数用于从字符串转换为双精度。
但我无法弄清楚这两个功能之间的区别。
这两个功能有什么区别,如果有,请告诉我...
提前致谢。
从手册页double atof(const char *nptr)
:
该
atof()
函数将指向的字符串的初始部分转换nptr
为double
。行为与strtod(nptr, NULL);
除了
atof()
不检测错误。
为什么它不能检测错误?好吧,因为第二个参数double strtod(const char *nptr, char **endptr)
是用来指向最后一个无法转换的字符,所以你可以相应地处理这种情况。如果字符串已成功转换,endptr
将指向\0
. 使用atof
, 设置为NULL
,因此没有错误处理。
错误处理示例strtod
:
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
const char *str = "1234.56";
char *err_ptr;
double d = strtod(str, &err_ptr);
if (*err_ptr == '\0')
printf("%lf\n", d);
else
puts("`str' is not a full number!");
return 0;
}