如何使用strtol函数将字符串转换为长整型数值?

strtol 是 C 标准库中的一个函数,用于将字符串转换为长整型数。

strtol函数详解

如何使用strtol函数将字符串转换为长整型数值?

strtol 是 C 标准库中的一个函数,用于将字符串转换为长整型数(long int 类型),该函数在<stdlib.h> 头文件中声明,本文将详细解释strtol 函数的用法、参数、返回值以及一些示例代码,并附上相关 FAQs。

函数原型

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

参数说明

const char *str: 要转换的字符串。

char **endptr: 对类型为char 的对象的引用,其值由函数设置为第一个不能转换的字符的指针,如果endptrNULL,则不使用该参数。

int base: 基数,必须介于 2 和 36 之间(包含),或者是特殊值 0,当base 为 0 时,会根据字符串的前缀自动判断进制:如果字符串以 "0x" 或 "0X" 开头,则视为十六进制;如果以 "0" 开头,则视为八进制;否则视为十进制。

返回值

成功时,返回转换后的长整型数值。

如果输入字符串不符合数字格式,返回 0。

如果转换结果超出long int 的表示范围,设置errnoERANGE,并返回LONG_MAXLONG_MIN

错误处理

如果strNULL 或指向空字符串,返回 0。

如何使用strtol函数将字符串转换为长整型数值?

如果endptr 不为NULL,函数会将第一个无效的字符的地址赋给*endptr

如果转换过程中发生溢出,设置errnoERANGE

示例代码

以下是几个使用strtol 函数的示例代码:

示例1:基本使用

#include <stdio.h>
#include <stdlib.h>
int main() {
    char str[] = "12345";
    char *endptr;
    long int num;
    num = strtol(str, &endptr, 10);
    if (*endptr != '