来自于:http://www.cnblogs.com/lzjsky/archive/2011/01/05/1926369.html    感谢作者!

long int strtol(const char *nptr, char **endptr, int base)
strtol()会将nptr指向的字符串,根据参数base,按权转化为long int, 然后返回这个值。
参数base的范围为2~36,和0;它决定了字符串以被转换为整数的权值。
可以被转换的合法字符依据base而定,举例来说,当base为2时,合法字符为‘0’,‘1’;base为8时,合法字符为‘0’,‘1’,……‘7’;base为10时,合法字符为‘0’,‘1’,……‘9’;base 为16时,合法字符为‘0’,‘1’,……‘9’,‘a’,……‘f’;base为24时,合法字符为‘0’,……‘9’,‘a’,……‘n’,base为36时,合法字符为‘0’,……‘9’,‘a’,……‘z’;等等。其中,不区分大小写,比如,‘A’和‘a’会都会被转化为10。
当字符合法时,‘0’,……‘9’依次被转换为十进制的0~9,‘a’,……‘z’一次北转换为十进制的10~35。
strtol()函数检测到第一个非法字符时,立即停止检测,其后的所有字符都会被当作非法字符处理。合法字符串会被转换为long int, 作为函数的返回值。非法字符串,即从第一个非法字符的地址,被赋给*endptr。**endptr是个双重指针,即指针的指针。strtol()函数就是通过它改变*endptr的值,即把第一个非法字符的地址传给endptr。

多数情况下,endptr设置为NULL, 即不返回非法字符串。
下面看几个例子:
------------------------------------------------------
char buffer[20]="10379cend$3";
char *stop;
printf("%d\n",strtol(buffer, &stop, 2));
printf("%s\n", stop);
输出结果:
2
379cend$3
-------------------------------------------------------
char buffer[20]="10379cend$3";
char *stop;
printf("%d\n",strtol(buffer, &stop, 8));
printf("%s\n", stop);
输出结果:
543
9cend$3
--------------------------------------------------------
char buffer[20]="10379cend$3";
char *stop;
printf("%d\n",strtol(buffer, &stop, 10));
printf("%s\n", stop);
输出结果:
10379
cend$3
-------------------------------------------------------
char buffer[20]="10379cend$3";
char *stop;
printf("%d\n",strtol(buffer, &stop, 16));
printf("%s\n", stop);
输出结果:
17005006
nd$3
另外,如果base为0,且字符串不是以0x(或者0X)开头,则按十进制进行转化。如果base为0或者16,并且字符串以0x(或者0X)开头,那么,x(或者X)被忽略,字符串按16进制转化。如果base不等于0和16,并且字符串以0x(或者0X)开头,那么x被视为非法字符。
例如:
-------------------------------------------------------
char buffer[20]="0x31da6c";
char *stop;
printf("%d\n",strtol(buffer, &stop, 0));
printf("%s\n", stop);
输出结果(stop为空):
3267180

-------------------------------------------------------
char buffer[20]="0x31da6c";
char *stop;
printf("%d\n",strtol(buffer, &stop, 13));
printf("%s\n", stop);
输出结果:
0
0x31da6c
-------------------------------------------------------

最后,需要说明的是,对于nptr指向的字符串,其开头和结尾处的空格被忽视,字符串中间的空格被视为非法字符。
例如:
-------------------------------------------------------
char buffer_1[20]="10379c";
char buffer_2[20]="      10379c        ";
char buffer_3[20]="      10      379c        ";
printf("%d\n",strtol(buffer_1,NULL,0));
printf("%d\n",strtol(buffer_2,NULL,0));
printf("%d\n",strtol(buffer_3,NULL,0));
输出结果为:
10379
10379
10
--------------------------------------------------------

linux c strtol 函数解析相关推荐

  1. linux驱动---ioctl函数解析

    转自(39条消息) linux驱动---ioctl函数解析_那可真是太开心了的博客-CSDN博客_linux驱动ioctl 参考:ioctl,unlocked_ioctl 处理方法-阿里云开发者社区 ...

  2. linux网络编程函数解析之——setsockopt / getsockopt用法

    linux网络编程函数解析之--setsockopt / getsockopt用法 工程中无线传输方面的东西用到了setsockopt(),getsockopt().网上相关博客很多,而且类似,原文出 ...

  3. linux之getcwd函数解析,如何在Linux 中使用getcwd()函数

    如何在Linux 中使用getcwd()函数 发布时间:2021-03-15 17:35:21 来源:亿速云 阅读:106 作者:Leah 这期内容当中小编将会给大家带来有关如何在Linux 中使用g ...

  4. linux之getcwd函数解析,Linux 中C语言getcwd()函数的用法

    Linux 中C语言getcwd()函数的用法 先来看该函数的声明: #include char *getcwd(char *buf,size_t size); 介绍: 参数说明:getcwd()会将 ...

  5. linux c setuid函数解析

    在讨论这个setuid函数之前,我们首先要了解的一个东西就是内核为每个进程维护的三个UID值.这三个UID分别是实际用户ID(real uid).有效用户ID(effective uid).保存的设置 ...

  6. linux 声明消息函数,linux消息队列函数--解析

    #include www.2cto.com --------------------------------------------------------------------- 1.系统建立IP ...

  7. linux之creat函数解析

    creat函数完全可以被open函数替代: open(pathname, O_WRONLY | O_CREAT | O_TRUNC, mode); [lingyun@localhost create] ...

  8. linux open函数解释,linux之open函数解析

    一. open.c /********************************************************************************* *       ...

  9. linux dup用法,Linux:dup和dup2文件描述符及函数解析,dupdup2

    Linux:dup和dup2文件描述符及函数解析,dupdup2 一.文件描述符 1.1 文件描述符概念 我们知道在Linux下一切皆文件,因此我们需要一个东西对这些文件进行管理,此时就需要文件描述符 ...

最新文章

  1. groovy–运算符重载
  2. 测绘专业学生对测绘软件的一点认识
  3. jQuery 第八课 —— 数据交互的升级
  4. [Bzoj1085] [SCOI2005]骑士精神
  5. GS3D An Efficient 3D Object Detection Framework for Autonomous Driving算法解析
  6. 《遥远的救世主》遵守客观规律(五)——文化属性
  7. 深入理解android虚拟机
  8. 计算机毕业设计ssm游泳馆管理平台
  9. 网页设计之标题栏显示当前系统日期
  10. 刷新页面,js实现文章浏览量自动更新
  11. ECCV 2020 论文大盘点-动作检测与识别篇
  12. 【STL】string详解(string类常用的操作函数、构造函数、赋值操作、子符串的拼接、查找和替换、比较、存取、插入和删除、获取)
  13. 计算机操作系统--Linux初试05
  14. MDC是什么鬼?用法、源码一锅端
  15. 永信至诚助“海南省首届网络安全大赛”决赛圆满收官
  16. 用秦九昭公式计算多项式
  17. Object Detection in 20 Years A Survey 论文阅读笔记
  18. PPG成长思辨录:轻公司的光环与谜局
  19. python versions compatibility_有人通过Macports在Snow Leopard中安装了python26...
  20. 【洛谷】P1046 陶陶摘苹果

热门文章

  1. [智慧供热]-客服系统解决方案
  2. SpringBoot脏话过滤、登陆拦截?一看就会!
  3. 如何解除WORD限制编辑
  4. 公司不让用Xshell,怎么办?
  5. (Agora声网)多人视频聊天应用的开发(一)快速集成
  6. 基于FPGA和Verilog实现的9层电梯控制器仿真设计
  7. 哔哩哔哩 B站视频引用到自己的网站的方法
  8. c语言中如何输入log函数,在C语言中使用对数函数的方法
  9. 设置win10桌面、锁屏、密码输入界面背景色、图片
  10. 国产数据库kingbase