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

比如一个数组n[100]中存储了如
n[0]=2134
n[1]=kjsg
.....
得数 那么我想将其中所有数据转化为浮点型数据,并存储到另外一个数组,

慕容森
浏览 78回答 2
2回答

扬帆大鱼

首先你要了解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安全,具体的你可以查他们的用法,我讲起来就有点复杂了

潇湘沐

#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 );}
打开App,查看更多内容
随时随地看视频慕课网APP