atoi
#include <stdlib.h>
int atoi(const char *nptr);
atoi把一个字符串开头可以识别成十进制整数的部分转换成int型 。
例如:
atoi("123abc");//返回值是123,
atoi(" -90.6-");//字符串开头可以有若干空格,返回值是-90
atoi("asdf");//如果字符串开头没有可识别的整数,则返回0
atoi("0***");//也返回0,根据返回值并不能区分上面这两种情况,所以使用atoi函数不能检查出错的情况。
atof
#include <stdlib.h>
double atof(const char *nptr);
atof把一个字符串开头可以识别成浮点数的部分转换成double型。
字符串开头可以识别的浮点数格式和C语言的浮点数常量相同:
atof("31.4 ");//返回值是31.4
atof("3.14e+1AB");//返回值也是31.4
strtol
#include <stdlib.h>
long int strtol(const char *nptr, char **endptr, int base);
strtol是atoi的增强版,主要体现在这几方面:
- 不仅可以识别十进制整数,还可以识别其它进制的整数,取决于base参数。
- endptr是一个传出参数,函数返回时指向后面未被识别的第一个字符。
- 如果字符串中的整数值超出long int的表示范围(上溢或下溢),则strtol返回它所能表示的最大(或最小)整数,并设置errno为ERANGE。
strtol("0XDEADbeE~~", NULL, 16);//返回0xdeadbee的值
strtol("0777~~", NULL, 8);//返回0777的值
strtod
#include <stdlib.h>
double strtod(const char *nptr, char **endptr);
trtod是atof的增强版,增强的功能和strtol类似。