#include<stdlib.h> // 这个是C标准库,与linux无关。这套函数是通用
long int strtol(const char *nptr, char **endptr, int base);
long long int strtoll(const char *nptr, char **endptr, int base);
unsigned long int strtoul(const char *nptr, char **endptr, int base);
unsigned long long int strtoull(const char *nptr, char **endptr, int base);

说明,第一个参数 nptr是要转化的字符串。第三个参数base说明nptr的进制。base 取值范围 0,2-36

这几个函数会忽略nptr前面的空格( ' ', '\t', '\n' '\f', '\v' '\r' ,由isspace判定为真的字符)

while (*nptr && isspace ( *nptr ) ) ++ nptr;

然后遇到非合法字符结束;

base = 2; 合法字符为0, 1

base = 3; 合法字符为0,1, 2

...

base = 11; 合法字符为0,1,...,9,a(A)

...

base = 36;合法字符为0, 1, ...,9,a(A),...,z(Z)。

字符 a-z,是忽略大小写的,混着来也行,例如 strtol("aA", NULL, 11)依然能得到正确的结果。

函数的第二个参数endptr可以为空,如果不为空,则 endptr 保存函数结束前的那个非合法字符的地址。

如果没有合法字符,则 *endptr = nptr,函数返回0.

例如:

1.

char *endptr;

char nptr[]="123abc";

int ret = strtol(nptr, &endptr, 10 );

由于10进制里没有“数字”a,所以扫描到a,结束。

这样 ret = 123;

endptr = &nptr[3]; ( printf("%s", endptr);将得到字符串 abc )

2.

char nptr[]=" \n\t    abc";

int ret = strtol(nptr, &endptr, 10 );

由于函数会忽略nptr前面的空格(' ', '\n'...),所以,从字符a开始扫描,但是遇见的“第一个”即是不合法字符。

所以函数结束。 ret=0; endptr = nptr;

以下的讨论,会认为 nptr 前面没有空格,

即执行过类似于while (*nptr  &&isspace ( *nptr ) ) ++ nptr;

如果base 为0.则分3种情况:

如果nptr 以0x(零x)开头,则把nptr当成16进制处理。

如果npstr以0(零)开头,则把nptr当成8进制处理。

否则,把nptr当成10进制。

对于函数执行错误,如传了一个非合法base,则errno会设置相关值

strtol,strtoll,strtoul, strtoull函数的使用相关推荐

  1. c/c++函数 -strtol strtoll strtoul strtoull 使用注意项cc

    说明 在项目开发时,字符串跟整形的转换是普遍需求的一个功能,在c/c++中常用的几个函数包括 strtol strtoll strtoul strtoull. 目前我们的项目里面进行转换的时候都是直接 ...

  2. c/c++函数 -strtol strtoll strtoul strtoull解读

    在项目开发时,字符串跟整形的转换是普遍需求的一个功能,在c/c++中常用的几个函数包括strtol strtoll strtoul strtoull.  目前我们的项目里面进行转换的时候都是直接调用, ...

  3. strtol strtoll strtoul strtoull应用

    在项目开发时,字符串跟整形的转换是普遍需求的一个功能,在c/c++中常用的几个函数包括 strtol strtoll strtoul strtoull. 目前我们的项目里面进行转换的时候都是直接调用, ...

  4. strtol,strtoll,strtoul, strtoull字符串转化成数字

    名字: strtol, strtoll, strtoul, strtoull convert a string to a (signed, unsigned ) long integer string ...

  5. 函数atof,atoi,atol,strtod,strtol,strtoul 描述

    函数atof,atoi,atol,strtod,strtol,strtoul atof(将字串转换成浮点型数)  相关函数 atoi,atol,strtod,strtol,strtoul 表头文件 # ...

  6. 11-字符串转换函数(strtod、strtol、strtoul)

    字符串转换函数包含在通用工具函数库<strlib.h>中 一:函数strtod(string to double) double strtod(const char *nPtr,char ...

  7. 函数atof,atoi,atol,strtod,strtol,strtoul

    在做项目过程中经常需要把字符串转换成整形数,这时候就需要用到下面几种函数:函数atof,atoi,atol,strtod,strtol,strtoul 函数说明是:该函数会扫描参数中的字符串,跳过前面 ...

  8. linux c 数字字符串互转 相关函数 atoi、atof、atol、atrtod、strtol、strtoul

    一.atoi函数(将字符串转换成整型数) 定义函数 int atoi(const  char *  nptr); 函数说明 atoi()会扫描参数nptr字符串,跳过前面的空格字符,直到遇上数字或正负 ...

  9. toi,atol,strtod,strtol,strtoul实现类型转换

    版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明 http://ivanvic.blogbus.com/logs/1920125.html atof(将字符串转换成浮点型数) 相关函数 ...

最新文章

  1. 网络负载均衡-DNS负载均衡
  2. angular.animation的使用
  3. 如何禁止网络爬虫频繁爬自己网站
  4. biosrecovery什么意思_BIOS中的每个中文是什么意思
  5. 操作系统上机作业--多线程排序
  6. linux多线程九宫格,项目实战:Qt九宫格图片资源浏览器(支持window、linux、兼容各国产系统,支持子文件夹,多选,全选,图片预览,行数与列数设置等)...
  7. 测试工程师值得被尊重!是否有此共鸣!
  8. WARNING:root:could not open file ‘/etc/apt/sources.list.d
  9. FCP-报表交付工程师考试经验
  10. openlayer添加自定义图片图层
  11. 数据库设计(1)_概念结构设计
  12. 上微信怎么同时用计算机,怎么在电脑上同时登陆两个微信
  13. php支付宝接口参数错误,php支付接口_php支付宝支付接口程序及参数详解
  14. OSPF的5、7类LSA中的FA、cost计算详解
  15. 03 学生免费注册Pycharm专业版
  16. 支持nfc的android手机,NFC手机有哪些 2017支持NFC功能的手机推荐 (5)
  17. 一个屌丝程序猿的人生(三十五)
  18. 2021-2027全球与中国可持续性蛋白质市场现状及未来发展趋势
  19. Redis 使用手册
  20. GPRS连接阿里云物联网平台一

热门文章

  1. 用python下载辞典
  2. web.xml 中的listener、 filter、servlet 加载顺序
  3. Android programming on Mac 之安装Eclipse
  4. 录制caf 转 mp3
  5. 是雏还是鹰mdash;mdash;编程规范之代码注释
  6. cass方格网数据excel_讨论|CASS怎么计算回字型土方? 124
  7. android签到功能模块,基于android的课堂签到系统.doc
  8. php延迟更新,ThinkPHP开发指南-模型-高级模型之延迟更新
  9. 汇编写java模块_java – maven汇编插件moduleset源指令不包括任何文件,不符合附带的模块...
  10. webase crud查看所有表_Laravel-Gii 可视化代码生成工具 CRUD +GUI