strtol函数讲解
头⽂件:#include <stdlib.h>
strtol() 函数⽤来将字符串转换为长整型数(long),其原型为:
long int strtol (const char* str, char** endptr, int base);
【参数说明】str 为要转换的字符串,endstr 为第⼀个不能转换的字符的指针,base 为字符串 str 所采⽤的进制。
【函数说明】strtol() 会将参数 str 字符串根据参数 base 来转换成长整型数(long)。参数 base 范围从2 ⾄36,或0。参数base 代表 str 采⽤的进制⽅式,如base 值为10 则采⽤10 进制,若base 值为16 则采⽤16 进制等。
strtol() 会扫描参数 str 字符串,跳过前⾯的空⽩字符(例如空格,tab缩进等,可以通过函数来检测),直到遇上数字或正负符号才开始做转换,再遇到⾮数字或字符串结束时('\0')结束转换,并将结果返回。
两点注意:
当 base 的值为 0 时,默认采⽤ 10 进制转换,但如果遇到 '0x' / '0X' 前置字符则会使⽤ 16 进制转换,遇到 '0' 前置字符则会使⽤ 8 进制转换。
若endptr 不为NULL,则会将遇到的不符合条件⽽终⽌的字符指针由 endptr 传回;若 endptr 为 NULL,则表⽰该参数⽆效,或不使⽤该参数。
【返回值】返回转换后的长整型数;如果不能转换或者 str 为空字符串,那么返回 0(0L);如果转换得到的值超出 long int 所能表⽰的范围,函数将返回 LONG_MAX 或 LONG_MIN(在 limits.h 头⽂件中定义),并将 errno 的值设置为 ERANGE。
温馨提⽰:ANSI C 规范定义了、、、、、共6个可以将字符串转换为数字的函数,⼤家可以对⽐学习。另外在 C99 / C++11 规范中⼜新增了5个函数,分别是 atoll()、strtof()、strtold()、strtoll()、strtoull(),在此不做介绍,请⼤家⾃⾏学习。
程序例:
#include <stdlib.h>
#include <stdio.h>
int main(void)
{
字符串函数title作用char *string = "87654321", *endptr;
long lnumber;
/* strtol converts string to long integer */
lnumber = strtol(string, &endptr, 10);
printf("string = %s long = %ld\n", string, lnumber);
return 0;
}
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论