1

我知道strtod()atof()函数用于从字符串转换为双精度。

但我无法弄清楚这两个功能之间的区别。

这两个功能有什么区别,如果有,请告诉我...

提前致谢。

4

1 回答 1

2

手册页double atof(const char *nptr)

atof()函数将指向的字符串的初始部分转换nptrdouble。行为与

    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;
}
于 2021-05-02T07:27:53.660 回答