strtoul (const char* str, char** endptr, int base);
时间: 2023-11-18 14:02:24 浏览: 37
`strtoul` 函数是一个 C 标准库函数,用于将字符串转换为无符号长整型数。它的函数原型如下:
```c
unsigned long int strtoul(const char *str, char **endptr, int base)
```
其中,`str` 是要转换的字符串;`endptr` 是指向字符指针的指针,用于存储转换结束时的第一个非法字符的指针。如果 `endptr` 是 `NULL`,则不会存储任何值;`base` 是进制数,可以是 2~36 之间的任意整数,或者是特殊值 0。
`strtoul` 函数会扫描 `str` 指向的字符串,跳过前面的空格字符,然后尝试将剩余部分解释为一个无符号长整型数。如果成功,返回该数值;否则,返回 0,并设置 `endptr` 指向第一个无法解释的字符。如果 `str` 指向的字符串不包含有效的数字,`endptr` 会指向 `str` 的开头。如果 `base` 是 0,则基数由字符串的前缀决定:如果字符串以 "0x" 或 "0X" 开头,将使用 16 进制;如果以 "0" 开头,则使用 8 进制;否则使用 10 进制。如果 `base` 不是 0,它必须在 2~36 之间。
举个例子,假设有如下代码:
```c
const char *str = "12345abc";
char *endptr;
unsigned long int num = strtoul(str, &endptr, 16);
printf("num=%lu, endptr=%p\n", num, endptr);
```
输出结果为:
```
num=3054410, endptr=0x7fff5fbff8a
```
这说明函数成功将字符串 "12345abc" 转换为 16 进制数 0x12345abc,并且 `endptr` 指向字符串中的字符 'a'。
相关推荐
![txt](https://img-home.csdnimg.cn/images/20210720083642.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.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)