,,浅析C语言中strtol()函数与strtoul()函数的用法

,,浅析C语言中strtol()函数与strtoul()函数的用法

本文主要介绍C语言中strtol()函数和strtol()函数的用法,并注意将string转换为long的区别。有需要的朋友可以参考一下。

C strtol()函数:将一个字符串转换成一个long(长整数)

头文件:

#包含stdlib.h

strtol()函数用于将字符串转换为长整型(long),其原型为:

long int strtol (const char* str,char** endptr,int base);

【参数说明】str是要转换的字符串,endstr是不能转换的第一个字符的指针,base是字符串str采用的十进制。

【函数说明】strtol()会根据参数基将参数str字符串转换成长整型(long)。基本参数范围从2到36,即0。base参数表示str采用的十进制模式。如果基值是10,则采用十进制,如果基值是16,则采用十六进制。

Strtol()将扫描参数str字符串,跳过前面的空格字符(如空格、制表符缩进等。可以通过isspace()函数检测到),开始转换,直到遇到数字或正负符号,然后在遇到非数字或字符串结尾(' \0 ')时结束转换,返回结果。

注意两点:

当base的值为0时,默认情况下采用十进制转换,但如果遇到“0X”/“0X”前缀,将使用十六进制转换,如果遇到“0”前缀,将使用八进制转换。

如果endptr不为空,则返回endptr未限定终止的字符的指针;如果endptr为NULL,则此参数无效或未使用。

[返回值]返回转换后的长整数;如果不能转换或者str为空字符串,则返回0(0L);如果转换后的值超出了long int可以表示的范围,该函数将返回LONG_MAX或LONG_MIN(在limits.h头文件中定义),并将errno的值设置为e range。

[示例]将字符串转换为十进制。

#包含stdio.h

#包含stdlib.h

int main()

{

char SZ numbers[]=' 2001 60c0c 0-110111010011001000000x 6 fffff ';

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('转换为十进制:%ld,%ld,%ld,%ld\n ',li1,li2,li3,li4);

系统(“暂停”);

返回0;

}

执行结果:

转换成十进制:

2001、6340800、-3624224、7340031

C strtoul()函数:将字符串转换为无符号长整型(无符号长整型)

头文件:

#包含stdlib.h

strtoul()函数源自“字符串到无符号长整型”,用于将字符串转换为无符号长整型。它的原型是:

无符号长整型strtoul (const char* str,char** endptr,int base);

【参数说明】str是要转换的字符串,endstr是不能转换的第一个字符的指针,base是字符串str采用的十进制。

【函数说明】strtoul()会根据参数基将参数str字符串转换成无符号长整型数。基本参数范围从2到36,即0。base参数表示str采用的十进制模式。如果基值是10,则采用十进制,如果基值是16,则采用十六进制。

Strtoul()将扫描参数str字符串,跳过前面的空格字符(如空格、制表符缩进等。可以用isspace()函数检测),开始转换,直到遇到一个数字或者正负符号,然后遇到一个非数字或者字符串的结尾(' \0 '),结束转换,返回结果。

注意两点:

当base的值为0时,默认情况下采用十进制转换,但如果遇到“0X”/“0X”前缀,将使用十六进制转换,如果遇到“0”前缀,将使用八进制转换。

如果endptr不为空,则返回endptr未限定终止的字符的指针;如果endptr为NULL,则此参数无效或未使用。本文的最后一个例子没有展示endptr参数的使用。可以参考strtol()函数的例子,更直观的理解endptr参数。

[返回值]返回转换后的无符号长整数;如果不能转换或者str为空字符串,则返回0;如果转换后的值超出了无符号long int可以表示的范围,该函数将返回ULONG_MAX(在limits.h头文件中定义),并将errno的值设置为e range。

温馨提示:ANSI C规范定义了6个可以将字符串转换为数字的函数:stof()、atoi()、atol()、strtod()、strtod()和strtod()。可以通过对比来学习。另外,C99/C 11中新增了五个函数,分别是atoll()、strtof()、strtold()、strtoll()、strtoll(),这里不做介绍。请自学。

示例:将输入字符串转换为无符号长整数。

#包含stdio.h

#包含stdlib.h

int main()

{

char缓冲器[256];

无符号长ul;

printf('输入一个无符号数:');

fgets (buffer,256,stdin);

ul=strtoul (buffer,NULL,0);

printf('输入的值:%lu。\n ',ul);

系统(“暂停”);

返回0;

}

运行结果:

输入一个无符号数:017cyuyan

输入的值:15。

由于base参数设置为0,字符串“017cyuyan”以“0”开头,所以采用八进制转换。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

相关文章阅读

  • c语言调用退出函数 c语言退出整个程序怎么写
  • c语言中怎么给函数初始化 c语言的初始化语句
  • c语言编写函数计算平均值 c语言求平均函数
  • 详解c语言中的字符串数组是什么,详解c语言中的字符串数组结构,详解C语言中的字符串数组
  • 表达式求值c++实现,c语言实现表达式求值
  • 看懂c语言基本语法,C语言详解,C语言的基本语法详解
  • 用c语言实现快速排序算法,排序算法设计与实现快速排序C语言,C语言实现快速排序算法实例
  • 深入解析c语言中函数指针的定义与使用方法,深入解析c语言中函数指针的定义与使用情况,深入解析C语言中函数指针的定义与使用
  • 描述E-R图,E-R图举例,关于C语言中E-R图的详解
  • 折半查找法C语言,折半查找算法(算法设计题)
  • 折半查找法C语言,c语言折半法查找数据,C语言实现折半查找法(二分法)
  • 扫雷小游戏c++代码设计,c语言扫雷游戏源代码,C语言实现扫雷小游戏详细代码
  • 怎样统计程序代码行数,C语言统计行数,C#程序员统计自己的代码行数
  • 基于c语言的贪吃蛇游戏程序设计,用c语言编写贪吃蛇游戏程序,C语言实现简单的贪吃蛇游戏
  • 图的两种遍历算法,图的遍历算法代码c语言,Python算法之图的遍历
  • 留言与评论(共有 条评论)
       
    验证码: