首页 > 编程笔记

C语言strtoul():将字符串转换为正整数

strtoul() 是 C语言的一个标准库函数,定义在<stdlib.h>头文件中。

strtoul() 函数用于将字符串转换为正整数(unsigned long int)。函数的原型如下:
unsigned long int strtoul(const char *str, char **endptr, int base);

参数

返回值

成功转换时,返回对应的无符号长整型值;如果没有可转换的字符,返回零;如果转换的值超出了 unsigned long int 的表示范围,则返回 ULONG_MAX,并设置 errno 为 ERANGE。

【实例】以下的 C 语言示例程序演示了 strtoul() 函数的功能和用法。
#include <stdio.h>
#include <stdlib.h>

int main() {
    const char* str = "  0x1f2a3b 010101";
    char* endptr;
    unsigned long int value;

    value = strtoul(str, &endptr, 0); // 使用0作为基数,从字符串中推断基数
    printf("Value: %lu\n", value); // 输出 "Value: 2035179"
    value = strtoul(endptr, NULL, 2); // 使用2作为基数,继续转换下一个字符串
    printf("Value: %lu\n", value); // 输出 "Value: 21"
    return 0;
}
输出结果为:

Value: 2042427
Value: 21

示例中,第一个要转换的字符串为 "0x1f2a3b",strtoul() 函数使用 0 作为基数,则将其看做是十六进制数进行转换,最终结果为 2042427;第二个要转换的字符串为 "010101",strtoul() 函数使用 2 作为基数,将其按照二进制数进行转换,最终结果为 21。

推荐阅读