1. 数据类型转换
使用ato-x和strto-xx转换
1.1 头文件
#include <stdlib.h>
1.2 函数区别:
- atol 相对简单,只对字符串简单判断,如果第一个字符是非法字符,返回0,如果前面是有效数值,返回前面的数值,后面非法的不返还。
- strtol将字符串转换为长整数,base为进制数, 如果转换成功,endptr指向字符串首地址,反之,则指向第一个非法字符。
- ato-x 不会检测错误,也就是errno,而strto-x函数则会触发errno变化
1.3 ato-x函数
名称 | 含义 | 相似功能函数 |
---|---|---|
double atof(const char *nptr) | 将字符串转换成double值 | strtod(nptr, NULL) |
int atoi(const char *nptr) | 将字符串转换成int值 | strtol(nptr, NULL, 10) |
long atol(const char *nptr) | 将字符串转换成int值 | strtol(nptr, NULL, 10) |
long long atoll(const char *nptr) | 将字符串转换成int值 | strtoll(nptr, NULL, 10) |
1.4 strto-xx函数
名称 | 含义 |
---|---|
double strtod(const char *nptr, char **endptr) | 将字符串转换为double值 |
float strtof(const char *nptr, char **endptr) | 将字符串转换为float值 |
long double strtold(const char *nptr, char **endptr) | 将字符串转换为long值 |
long strtol(const char *nptr, char **endptr, int base) | 将字符串转换为base进制的long值 |
long long strtoll(const char *nptr, char **endptr, int base) | 将字符串转换为base进制的long long值 |
unsigned long strtoul(const char *nptr, char **endptr, int base) | 将字符串转换为base进制的unsigned long值 |
unsigned long long strtoull(const char *nptr, char **endptr, int base) | 将字符串转换为base进制的unsigned long long值 |