C语言有atoi、atol、atof等库函数,可分别把ASCII编码的字符串转化为int、long、float类型的数字。
在海州等地区,都构建了全面的区域性战略布局,加强发展的系统性、市场前瞻性、产品创新能力,以专注、极致的服务理念,为客户提供成都网站设计、成都网站制作、外贸网站建设 网站设计制作按需定制开发,公司网站建设,企业网站建设,品牌网站制作,营销型网站建设,外贸网站建设,海州网站建设费用合理。
头文件:stdlib.h
函数原型:int atoi(const char* nptr);
(另外两个类似)
举个例子:
char *str="123";
int num=atoi(str);
执行后,num的值被初始化为123
这两个都是C语言的库函数
函数名: atoi
功 能: 把字符串转换成长整型数
用 法: #include stdlib.h
int atoi(const char *nptr);
程序例:
#include stdlib.h
#include stdio.h
int main(void)
{
int n;
char *str = "1234";
n = atoi(str);
printf("string = %s integer = %d\n", str, n);
return 0;
}
运行结果是:
string =1234 integer=1234
函数名: atof
功 能: 把字符串转换成浮点数
用 法: double atof(const char *nptr);
程序例:
#include stdlib.h
#include stdio.h
int main(void)
{
float f;
char *str = "12345.67";
f = atof(str);
printf("string = %s float = %f\n", str, f);
return 0;
}
C语言中将字符串转型化为浮点型数据的函数有:atof()
和
strtod()
头文件:
#include stdlib.h
函数原型:
double atof (const char* str);
【参数说明】str 为要转换的字符串。
【函数说明】atof() 函数会扫描参数str字符串,跳过前面的空白字符(例如空格,tab缩进等,可以通过 isspace() 函数来检测),直到遇上数字或正负符号才开始做转换,而再遇到非数字或字符串结束时('\0')才结束转换,并将结果返回。参数str 字符串可包含正负号、小数点或E(e)来表示指数部分,如123. 456 或123e-2。
【返回值】返回转换后的浮点数;如果字符串 str 不能被转换为 double,那么返回 0.0。
double strtod (const char* str, char** endptr);
【参数说明】str 为要转换的字符串,endstr 为第一个不能转换的字符的指针。
【函数说明】strtod() 函数会扫描参数str字符串,跳过前面的空白字符(例如空格,tab缩进等,可以通过 isspace() 函数来检测),直到遇上数字或正负符号才开始做转换,到出现非数字或字符串结束时('\0')才结束转换,并将结果返回。参数 str 字符串可包含正负号、小数点或E(e)来表示指数部分。如123. 456 或123e-2。
若endptr 不为NULL,则会将遇到的不符合条件而终止的字符指针由 endptr 传回;若 endptr 为 NULL,则表示该参数无效,或不使用该参数。
【返回值】返回转换后的浮点型数;若不能转换或字符串为空,则返回 0.0。
使用 atof( str ) 与使用 strtod(str, NULL) 结果相同。
一般应用方法为:
char str[]="123.45";
double d=atof(str);
printf("%.2lf", d ); //输出123.45
如果是自己做算法的话可以先判断字符串是不是数字,如果能保证是数字的话就不需要判断了。
可以先将数字字符串拆分成两个部分:整数部分、小数部分。
整数部分计算长度为NZ,根据长度来计算总值,小数部分也是一样。
最后只要把整数部分与小数部分相加就行。
如果是用系统函数,我想用atof应该可以,不过我只用过atoi,所以对atof不太了解,你可以百度上去找现成的资料
你这个应该用%f直接读.
如果用atof
则需要定义x为字符数组.
可以这样
char
x[100];
float
t;
scanf("%s",x);
if(strcmp(x,
"stop")==0)
break;
t=atof(x);
sum=sum+t;
没问题啊,
给你一个程序确认一下:
#include stdlib.h
#include stdio.h
int main(void)
{
char *str="83.840";
double l=atof(str);
printf("string = %s ,double = %lf\n", str, l);
return 0;
}
输出结果:
string = 83.840 ,double = 83.840000