为了账号安全,请及时绑定邮箱和手机立即绑定

请问如何使用atof函数,麻烦帮忙写一下这块的格式谢谢!

请问如何使用atof函数,麻烦帮忙写一下这块的格式谢谢!

慕容森 2023-03-04 18:14:11
比如一个数组n[100]中存储了如n[0]=2134n[1]=kjsg.....得数 那么我想将其中所有数据转化为浮点型数据,并存储到另外一个数组,
查看完整描述

2 回答

?
扬帆大鱼

TA贡献1799条经验 获得超9个赞

首先你要了解atof的prototype:
double atof(const char *str);
和atoi一样,函数的参数类型必须是char *,
而如果字符串里面没有可以转换的数字,
比如"abcd"的话,那么atof( "abcd" )将返回一个任意值。
而对于atoi,返回0

特别对于atoi,如果字符串为“0”的话,也会返回0,
所以不能判断字符串中是否含有0。
而对于atof,在WIKI里写到
“If the string is not a valid textual representation of a double, atof will silently fail, returning a random value”
所以更为危险。

所以不是什么值都可以转化为你要的数据类型的,
当然在内存里都是以0,1储存的,没有类型这个概念,
而我们可以使用各种类型,其实是编译器的功劳。

对于atoi和atof,
有新的函数可以替代
atoi可以用strtol替代,
而atof可以用strtod等替代
strtol比atoi安全,
具体的你可以查他们的用法,我讲起来就有点复杂了

查看完整回答
反对 回复 2023-03-08
?
潇湘沐

TA贡献1816条经验 获得超6个赞

#include <stdlib.h>
#include <stdio.h>

void main( void )
{
char *s; double x; int i; long l;

s = " -2309.12E-15"; /* Test of atof */
x = atof( s );
printf( "atof test: ASCII string: %s\tfloat: %e\n", s, x );

s = "7.8912654773d210"; /* Test of atof */
x = atof( s );
printf( "atof test: ASCII string: %s\tfloat: %e\n", s, x );

s = " -9885 pigs"; /* Test of atoi */
i = atoi( s );
printf( "atoi test: ASCII string: %s\t\tinteger: %d\n", s, i );

s = "98854 dollars"; /* Test of atol */
l = atol( s );
printf( "atol test: ASCII string: %s\t\tlong: %ld\n", s, l );
}


查看完整回答
反对 回复 2023-03-08
  • 2 回答
  • 0 关注
  • 58 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信