1.定义

#include <stdlib.h>
long int strtol(const char * restrict nptr,char ** restrict endptr,int base);
/*base:表示进制比如10-->10进制、2-->2进制、16-->16进制*/
/*功能:将字符形式的数字nptr按照进制base转换为long int型的整数*/
/*(**endptr):指向指针的指针==指向一个位置的指针==指向结束转换位置的指针*/

2.程序实例

/*一开始strtol()会扫描参数nptr字符串,跳过前面的空格字符,直到遇上
数字或正负符号才开始做转换,再遇到非数字或字符串结束符('\0')结束转
换,并将转换数值返回*/
/*参数endptr指向停止转换的位置,若字符串nptr的所有字符都成功转换成
数字则endptr指向串结束符'\0'。判断是否转换成功,应检查**endptr是否
为'\0'*/
#include <stdio.h>
#include <stdlib.h>
#define LIM 30char *s_gets(char *s, int n);int main()
{char number[LIM];char *end;long value;puts("Enter a number(empty line to quit)");while (s_gets(number, LIM) && number[0] != '\0'){value = strtol(number, &end, 10);/*也即&end是一个指向停止转换位置的指针---指向指针的指针,所以end本身是一个表示一个位置,再次解引用的值就是停止转换处字符的ASCII码(重要!!)*/printf("base 10 input,base 10 output:%ld,stopped at %s(%d)\n",value, end, *end);value = strtol(number, &end, 16);printf("base 16 input,base 10 output :%ld,stopped at %s(%d)\n",value, end, *end);puts("NEXT number!");}puts("Bye!");return 0;
}char *s_gets(char *s, int n)
{char *ret_val;int i = 0;ret_val = fgets(s, n, stdin); //fgets正常情况下返回的地址与第一个输入参数相同if (ret_val != NULL){while (s[i] != '\n' && s[i] != '\0'){i++;}if (s[i] == '\n'){s[i] = '\0';}else{while (getchar() != '\n'){continue;}}}return ret_val;
}
输入10和10bank的不同结果如下:
10
base 10 input,base 10 output:10,stopped at (0)
base 16 input,base 10 output :16,stopped at (0)
NEXT number!
10bank
base 10 input,base 10 output:10,stopped at bank(98)
base 16 input,base 10 output :4282,stopped at nk(110)
NEXT number!
***********************************************
其中98是字母b的ASCII码、110是字母n的ASCII码。

C语言中的strtol函数相关推荐

  1. C语言中itoa系列函数及sprintf系列函数使用详解

    C语言中itoa系列函数及sprintf系列函数使用详解 itoa函数系列 该系列函数是广泛使用的非标准C语言和C++语言扩展功能,只能在windows编译器下使用,如果涉及到跨平台是不允许使用的,这 ...

  2. c语言中的printf函数_C语言中的printf()函数与示例

    c语言中的printf函数 C语言中的printf()函数 (printf() function in C) The printf() function is defined in the <s ...

  3. c语言的point函数,C语言中friend友元函数详细解析

    C语言中friend友元函数详细解析 友元函数是可以直接访问类的私有成员的非成员函数.它是定义在类外的普通函数,它不属于任何类,但需要在类的定义中加以声明,声明时只需在友元的名称前加上关键字frien ...

  4. C语言中的strstr函数

    C语言中的strstr函数 说到strstr函数,可能很多人会比较陌生,对比其他的字符串函数比如strcpy,strcmp等等,它的确比较少用,但其实他也是一个非常有用和常见的函数,今天,就让我们一起 ...

  5. C语言中的atoi函数的实现

    C语言中有很多的库函数,其实平时没事的时候多去实现一下里面的库函数还是很有用的,下面就来讲一讲C语言中的atoi函数,这个函数的主要功能是将一个字符串转化为一个数字,可能第一眼看上去,你会觉得这是一个 ...

  6. main c语言中变量的定义,C语言中在main函数中定义的变量是全局变量么_后端开发...

    PHP 和 JavaSript 区别_后端开发 PHP是一种创建动态交互性站点的强有力的服务器端脚本语言,主要用于Web开发领域,而JavaSript是一种具有函数优先的轻量级,解释型或即时编译型的高 ...

  7. C语言中的sprint函数,求sprintf函数的详解

    公告: 为响应国家净网行动,部分内容已经删除,感谢读者理解. 话题:求sprintf函数的详解,要附带例,粘贴来的也可以,只 问题详情:还有就是我还想要一些常用的宽度修饰之类的输入或者输出格式:回答: ...

  8. c语言里面gets(a)是什么意思,C语言中的gets()函数

    在c语言中读取字符串有多种方法,比如scanf() 配合%s使用,但是这种方法只能获取一个单词,即遇到空格等空字符就会返回.如果要读取一行字符串, 比如:I love MIT 这种情况,scanf() ...

  9. C语言中的Sleep函数的解读

    Sleep函数: 功 能: 执行挂起一段时间 用 法: unsigned sleep(unsigned seconds); 注意: 在VC中使用带上头文件#include <windows.h& ...

最新文章

  1. 用原生js的postMessage实现iframe传值,也可以用于跨域嵌套iframe传值
  2. 关于稳定性和故障的一点思考,每个互联网公司都吃过这个亏!
  3. mysql倍增表的内容,mysql - DATEDIFF不会在触发器内倍增 - SO中文参考 - www.soinside.com...
  4. C语言自定义实现string字符串的算法(附完整源码)
  5. 文本标点英文对齐_电脑健盘中的所有英文组合意思超值解释建议收藏
  6. 关于Arcgis工作空间的记忆点
  7. OneAPM NI 基于旁路镜像数据的真实用户体验监控
  8. vue element隐藏组件滚动条scrollbar使用
  9. 你的简历已经被机器人筛选了
  10. SQL Prompt教程:使用SQL提示代码分析避免T-SQL技术债务
  11. 苹果隐私十年史:变与不变(3)产品与常识
  12. 最新全套Web前端视频教程
  13. Vuex持久化,刷新,vuex-along最详细教程
  14. sparkStreaming基础知识整理
  15. html 插入 flv,HTML中嵌入FLV视频文件
  16. 字节跳动否认完成支付牌照收购 或是基于央行批准的不确定性
  17. 苹果终究拗不过拼多多,iPhone12大跌千元
  18. 多模态情感分析的研究现状
  19. python之表白神器--组图拼爱心墙
  20. sha1加密实现(java)

热门文章

  1. 手机访问本地Tomcat服务器
  2. adaboost 算法 原理
  3. 广西机电学院计算机专业,广西机电职业技术学院计算机应用技术师资队伍
  4. 【通信原理】四、信道
  5. RT-Thread 静态内存管理(学习笔记)
  6. web应用常见安全问题
  7. 网络调试 adb tcpip 开启方法
  8. 输出调节基本概念1.1——有界性与稳定性的定义及判断
  9. 实测有效防止colab自动断开连接
  10. Oracle 表分区的理解整理