如何解决atof 和 strtod 的工作方式有什么不同吗?
我知道 strtod()
和 atof()
函数用于将字符串转换为双精度。
这两个功能有什么区别吗,如果有,请告诉我...
提前致谢。
解决方法
来自man page on 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;
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。