C语言strtol():将字符串转换为长整数
strtol() 是 C语言的一个标准库函数,定义在
strtol() 函数用于将字符串转换为长整数(long)。函数原型如下:
转换过程中,strtol() 函数首先会丢弃尽可能多的空白字符,直至找到第一个非空白字符,然后从该字符开始获取尽可能说的有效字符,并将它们转换成长整数。如果 endptr 不为 NULL,且后续还有无效的字符串,则将 endptr 指向首个无效的字符。
【实例】以下 C语言代码演示了 strtol() 函数的功能和用法。
<stdlib.h>
头文件中。strtol() 函数用于将字符串转换为长整数(long)。函数原型如下:
long int strtol(const char *str, char **endptr, int base);
参数
- str: 指向要转换的字符串。
- endptr: 可选的输出参数,如果不为 NULL,则函数执行完后,endptr 指向下一个要转换的字符。
- base: 数字的基数,从 2 到 36 之间,也可以为 0,表示根据特定规则自动检测基数。
返回值
返回转换成功后的长整数;如果无法进行有效的转换,函数返回 0L;如果转换后的数值超出了 long 类型所能表示的范围,函数会返回 LONG_MAX 或者 LONG_MIN (定义在<limits.h
>头文件)。转换过程中,strtol() 函数首先会丢弃尽可能多的空白字符,直至找到第一个非空白字符,然后从该字符开始获取尽可能说的有效字符,并将它们转换成长整数。如果 endptr 不为 NULL,且后续还有无效的字符串,则将 endptr 指向首个无效的字符。
【实例】以下 C语言代码演示了 strtol() 函数的功能和用法。
#include <stdio.h> /* printf */ #include <stdlib.h> /* strtol */ int main () { char szNumbers[] = "2001 60c0c0 -1101110100110100100000 0x6fffff"; char * pEnd; long int li1, li2, li3, li4; li1 = strtol (szNumbers,&pEnd,10); li2 = strtol (pEnd,&pEnd,16); li3 = strtol (pEnd,&pEnd,2); li4 = strtol (pEnd,NULL,0); printf ("The decimal equivalents are: %ld, %ld, %ld and %ld.\n", li1, li2, li3, li4); return 0; }输出结果为:
The decimal equivalents are: 2001, 6340800, -3624224 and 7340031