strtol
时间: 2024-02-21 18:59:40 浏览: 27
`strtol` 是C标准库中的一个函数,用于将字符串转换为长整型数。其函数原型为:
```c
long int strtol(const char *nptr, char **endptr, int base);
```
其中,`nptr` 是待转换的字符串指针,`endptr` 是指向字符指针的指针,用于存储转换过程中停止的位置,`base` 是转换时使用的进制数。函数返回转换后的长整型数。
相关问题
strtol 函数
`strtol` 是一个 C 语言中的函数,可以将字符串转换为长整型数。其函数原型为:
```c
long int strtol(const char *str, char **endptr, int base);
```
参数 `str` 表示要转换的字符串,`endptr` 是一个指向字符指针的指针,用于存储第一个不能转换的字符的地址,`base` 表示进制数。该函数的返回值是转换后的长整型数。
例如,将字符串 "123" 转换为长整型数,可以这样调用 `strtol` 函数:
```c
char *str = "123";
char *endptr;
long int num = strtol(str, &endptr, 10);
```
此时 `num` 的值为 123,`endptr` 的值为字符串结尾的空字符的地址。如果要将字符串转换为十六进制的长整型数,可以将 `base` 参数的值设为 16。
strtol 函数和
atoi 函数都可以将字符串转换为整数,但是二者有一些区别。
- atoi 函数:将字符串转换为整数,只能转换十进制数,不能处理八进制和十六进制数,对于非法字符串会返回 0。
- strtol 函数:将字符串转换为长整数,可以处理八进制、十进制和十六进制数,对于非法字符串会返回 0,并设置 errno 错误码。
strtol 函数的原型为:
```c
long int strtol(const char *nptr, char **endptr, int base);
```
其中,nptr 是要转换的字符串,endptr 是一个指向字符指针的指针,用于存储转换后剩余的字符串,base 是转换的进制。如果 endptr 不为 NULL,则在转换过程中,它会指向转换后剩余的字符串的第一个字符。
下面是一个使用 strtol 函数将十六进制字符串转换为整数的示例代码:
```c
#include <stdio.h>
#include <stdlib.h>
int main()
{
char hex[] = "1a";
char *endptr;
long int dec;
dec = strtol(hex, &endptr, 16);
printf("十六进制数 %s 转换为十进制数为 %ld\n", hex, dec);
if (*endptr != '\0') {
printf("剩余的字符串为 %s\n", endptr);
}
return 0;
}
```
输出结果为:
```
十六进制数 1a 转换为十进制数为 26
```
在实际开发中,可以根据需要选择使用 atoi 函数或 strtol 函数进行字符串转换。
相关推荐
![doc](https://img-home.csdnimg.cn/images/20210720083327.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)