
C语言中将字符串转换为数字的方法包括使用 atoi、atol、atoll、strtol、strtoll、strtof、strtod、strtold 等函数。 其中,atoi 和 strtol 是最常用的函数。接下来,我们将详细讨论 strtol 函数的使用方法。
strtol 函数是 C 标准库中的一个函数,用于将字符串转换为长整型数字(long int)。与 atoi 相比,strtol 提供了更强的错误处理能力和灵活性。strtol 函数可以处理不同的进制数,并且能够检测转换过程中是否发生了错误。
一、strtol 函数的详细介绍
1. 函数原型
long int strtol(const char *nptr, char endptr, int base);
2. 参数说明
nptr:指向要转换的字符串的指针。endptr:指向一个字符指针的指针,用于存储转换结束的位置。如果不需要这个信息,可以传递NULL。base:指定转换的进制数。可以是 2(进制数)、10(十进制数)、16(十六进制数)等。如果传递 0,函数会根据字符串的格式自动判断进制数。
3. 返回值
- 成功时,返回转换后的长整型数字。
- 如果没有可转换的数字,返回 0。
- 如果发生了溢出,返回
LONG_MAX或LONG_MIN,并设置errno为ERANGE。
二、strtol 函数的使用示例
1. 基本使用
下面是一个使用 strtol 函数将字符串转换为长整型数字的示例:
#include <stdio.h>
#include <stdlib.h>
int main() {
const char *str = "12345";
char *endptr;
long int num;
num = strtol(str, &endptr, 10);
if (*endptr == '