当前位置: C语言 -- 标准库 -- <stdlib.h> -- atol

atol函数


概要:
#include <stdlib.h>
long int atol(const char *nptr);

描述:

该函数将参数nptr指向字符串的初始部分转换为long int类型的十进制整数。

该函数等价于:

strtol(nptr, (char **)NULL, 10)

区别在于发生错误时,atol函数不影响errno值。


该函数首先将字符串分成三个部分:

1、一个初始的、可能为空的空格字符(可以使用isspace函数检查。)序列;

2、一个类似十进制整数的主题序列;

3、由一个或者多个未识别字符组成的最终字符串(final string),包括字符串末尾的终止空字符;

然后尝试将主题序列转换为整数,并返回结果。


主题序列的预期形式是ISO/IEC 9899:2018标准第6.4.4.1 Integer constants节中描述的十进制整数常量的形式;主题序列前可能存在+号或者-号,但主题序列不包括整数后缀。

主题序列从第一个非空格字符开始,包含符合上述形式的尽可能多字符的最长初始子序列。如果字符串为空,或者如果字符串完全由空格字符组成,或者如果第一个非空格字符不是符号,也不是允许的字母或者数字,主题序列将不包含任何字符。


如果主题序列具有预期形式,从第一个数字开始的字符序列将根据ISO/IEC 9899:2018标准第6.4.4.1 Integer constants节的规则解释为十进制整数常量。

如果主题序列以-号开头,转换得到的值会被取反。


非“C”语言环境中,还可以接受特定语言环境的主题序列。

如果主题序列为空或者不符合预期形式,将不进行任何转换。


参数:
const char *nptr

指向被转换的字符串的指针。


返回值:

如果发生转换,函数返回转换后的值;如果没有发生转换,函数返回0


范例:
1 
2 
3 
4 
5 
6 
7 
8 
9 
10 
11 
12 
13 
14 
15 
16 
/*函数atol范例*/

#include <stdio.h>
#include <stdlib.h>

int main(void)
{
    const char str[] = "2017abc 0101 0x1a1a -6982";
    long int number;

    number = atol(str);
    printf("number = %ld\n", number);

    return 0;
}


输出:

number = 2017


相关内容:
strtol 将字符串转换为long int类型整数的函数。
atoi 将字符串转换为int类型十进制整数的函数。
atoll 将字符串转换为long long int类型十进制整数的函数。