strtol函数详解
strtol
是 C 标准库中的一个函数,用于将字符串转换为长整型数(long int
类型),该函数在<stdlib.h>
头文件中声明,本文将详细解释strtol
函数的用法、参数、返回值以及一些示例代码,并附上相关 FAQs。
函数原型
long int strtol(const char *str, char **endptr, int base);
参数说明
const char *str
: 要转换的字符串。
char **endptr
: 对类型为char
的对象的引用,其值由函数设置为第一个不能转换的字符的指针,如果endptr
为NULL
,则不使用该参数。
int base
: 基数,必须介于 2 和 36 之间(包含),或者是特殊值 0,当base
为 0 时,会根据字符串的前缀自动判断进制:如果字符串以 "0x" 或 "0X" 开头,则视为十六进制;如果以 "0" 开头,则视为八进制;否则视为十进制。
返回值
成功时,返回转换后的长整型数值。
如果输入字符串不符合数字格式,返回 0。
如果转换结果超出long int
的表示范围,设置errno
为ERANGE
,并返回LONG_MAX
或LONG_MIN
。
错误处理
如果str
为NULL
或指向空字符串,返回 0。
如果endptr
不为NULL
,函数会将第一个无效的字符的地址赋给*endptr
。
如果转换过程中发生溢出,设置errno
为ERANGE
。
示例代码
以下是几个使用strtol
函数的示例代码:
示例1:基本使用
#include <stdio.h> #include <stdlib.h> int main() { char str[] = "12345"; char *endptr; long int num; num = strtol(str, &endptr, 10); if (*endptr != '