当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


C语言 strtol用法及代码示例


C语言stdlib头文件(stdlib.h)中strtol函数的用法及代码示例。

用法:

long int strtol (const char* str, char** endptr, int base);
将字符串转换为长整数
解析C-stringstr将其内容解释为指定内容的整数base,以long int价值。如果endptr不是空指针,该函数还会设置endptr指向数字后的第一个字符。

该函数首先丢弃必要数量的空白字符,直到找到第一个非空白字符为止。然后,从该字符开始,采用尽可能多的有效字符,这些字符遵循的语法取决于base参数,并将其解释为数值。最后,一个指向第一个字符的指针,该字符位于整数表示形式之后str存储在由指向的对象中endptr

如果值base如果为零,则预期的语法类似于整数常量的语法,该整数常量由以下各项组成:
  • 可选的符号字符(+或者-)
  • 可选的前缀,表示八进制或十六进制的基数("0"或者"0x"/"0X"分别)
  • 十进制数字序列(如果未指定基本前缀)或八进制或十六进制数字(如果存在特定前缀)

如果base值介于2到36之间,表示整数的格式应为表示指定基数的整数所需的任何有效数字和/或字母(从'0'直到'z'/'Z'对于基数36)。序列可以可选地在前面加上一个符号(可以是+或者-) 而如果base是16,可选"0x"或者"0X"字首。

如果第一个非空格字符序列str不是上面定义的有效整数,或者如果不存在这样的序列,因为str为空或仅包含空格字符,不执行任何转换。

对于除以外的语言环境"C"在语言环境中,可以接受其他主题序列形式。

参数

str
C-string以整数表示。
endptr
引用类型的对象char*,其值由函数设置为中的下一个字符str数值之后。
此参数也可以是空指针,在这种情况下不使用。
base
确定有效字符及其解释的数字基数(基数)。
如果是这样0,所用的基数由序列中的格式确定(请参见上文)。

返回值

成功后,函数将转换后的整数返回为long int值。
如果无法执行有效的转换,则返回零值(0L)。
如果读取的值超出可表示的值范围达long int,函数返回LONG_MAX或者LONG_MIN(在<climits>), 和errno被设定为ERANGE

示例

/* strtol example */
#include <stdio.h>      /* printf */
#include <stdlib.h>     /* strtol */

int main ()
{
  char szNumbers[] = "2001 60c0c0 -1101110100110100100000 0x6fffff";
  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 ("The decimal equivalents are: %ld, %ld, %ld and %ld.\n", li1, li2, li3, li4);
  return 0;
}


输出:

The decimal equivalents are: 2001, 6340800, -3624224 and 7340031



相关用法


注:本文由纯净天空筛选整理自C标准库大神的英文原创作品 C strtol function。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。