表头文件: #include <stdlib.h>
atof()函数
atof():double atof(const char *str );
功 能: 把字符串转换成浮点数
str:要转换的字符串。
返回值:每个函数返回 double 值,此值由将输入字符作为数字解析而生成。 如果该输入无法转换为该类型的值,则返回值为 0.0。
函数说明 :atof()会扫描参数nptr字符串,跳过前面的空格字符,直到遇上数字或正负符号才开始做转换,而再遇到非数字或字符串结束时('\0')才结束转换,并将结果返回,str字符串可包含正负号、小数点或E(e)来表示指数部分。
-
strtol()函数
编辑 - long int strtol(const char *nptr,char **endptr,int base);
- strtol函数会将参数nptr字符串根据参数base来转换成长整型数。
一 概述(使用时要包含<stdlib.h>文件,否则结果输出可能不正确):
(1)atoi
功 能: 把字符串转换成整型数。
名字来源:ASCII to integer 的缩写。
原型: int atoi(const char *nptr);
函数说明: 参数nptr字符串,如果第一个非空格字符存在,并且,如果不是数字也不是正负号则返回零,否则开始做类型转换,之后检测到非数字(包括结束符 \0) 字符时停止转换,返回整型数。
*补充:itoa(int value,char *str,int radix)。
功能:把整型转化为字符串,value是要转换的值,str是目标字符串地址,radix是转换后的进制。
(2)atof
功 能: 把字符串转换成浮点数
用 法: double atof(const char *nptr);
(3)atol
功 能: 把字符串转换成长整型数
用 法: long atol(const char *nptr)
(4)atoll
功 能: 把字符串转换成长长整型数
用 法: long long atoll(const char *nptr);
#include <stdlib.h>
1、strtod
double strtod(const char *nptr, char **endptr);
扫描参数nptr字符串,跳过前面的空格字符,直到遇上数字或正负符号才开始做转换,到出现非数字或字符串结束时('\0')才结束转换,并将结果返回。若endptr不为NULL,则会将遇到不合条件而终止的nptr中的字符指针由endptr传回,
返回值:返回转换后的浮点型数
#include<stdlib.h> #include<stdio.h> void main() { char *endptr; char a[] = "12345.6789" ; char b[] = "1234.567qwer" ; char c[] = "-232.23e4" ; printf ( "a=%lf\n" , strtod (a,NULL) ); printf ( "b=%lf\n" , strtod (b,&endptr) ); printf ( "endptr=%s\n" , endptr ); printf ( "c=%lf\n" , strtod (c,NULL) ); } |
a=12345.678900 b=1234.567000 endptr=qwer c=-2322300.000000 |
long int strtol(const char *nptr,char **endptr,int base);
这个函数会将参数nptr字符串根据参数base来转换成长整型数。 参数base范围从2至36,或0。参数base代表采用的进制方式, 如base值为10则采用10进制,若base值为16则采用16进制等。 当base值为0时则是采用10进制做转换,但遇到如’0x’前置 字符则会使用16进制做转换、遇到’0’前置字符而不是’0x’ 的时候会使用8进制做转换。一开始strtol()会扫描参数nptr 字符串,跳过前面的空格字符,直到遇上数字或正负符号才 开始做转换,再遇到非数字或字符串结束时('\0')结束转换, 并将结果返回。若参数endptr不为NULL,则会将遇到不合条件 而终止的nptr中的字符指针由endptr返回。
long double strtold(const char *nptr, char **endptr);
ANSI C 规范定义了 stof()、atoi()、atol()、strtod()、strtol()、strtoul() 共6个可以将字符串转换为数字的函数,大家可以对比学习;使用 atof() 与使用 strtod(str, NULL) 结果相同。另外在 C99 / C++11 规范中又新增了5个函数,分别是 atoll()、strtof()、strtold()、strtoll()、strtoull(),在此不做介绍,请大家自行学习