strtoull
是 C 和 C++ 编程语言中的一个标准库函数,用于将字符串转换为无符号长整型数(unsigned long long
)。以下是对 strtoull
函数的详细解释:
strtoull
函数原型通常如下:
unsigned long long strtoull(const char *str, char **endptr, int base);
str
是要转换的字符串。endptr
是一个指向字符指针的指针,用于存储转换后字符串中第一个无效字符的位置。base
是转换的基数,范围从 2 到 36。如果设置为 0,则函数会根据字符串的前缀来确定基数(例如,0x
或 0X
表示十六进制,0
表示八进制,其他情况表示十进制)。endptr
参数可以检查转换是否完全成功,以及识别出转换后字符串中的剩余部分。strtoull
将返回 0。此时,可以通过检查 endptr
指向的字符来确定失败的位置。unsigned long long
的范围,函数将返回 ULLONG_MAX
(定义在 <limits.h>
或 <stdint.h>
中),并且 errno
会被设置为 ERANGE
。可以通过检查 errno
来确定是否发生了溢出。endptr
将指向该字符。#include <stdio.h>
#include <stdlib.h>
#include <errno.h>
#include <limits.h>
int main() {
const char *str = "12345abc";
char *endptr;
unsigned long long val;
errno = 0; // 重置 errno
val = strtoull(str, &endptr, 10);
if (endptr == str) {
printf("没有可转换的数字
");
} else if (errno == ERANGE) {
printf("转换结果超出范围
");
} else {
printf("转换结果: %llu
", val);
printf("第一个无效字符: %s
", endptr);
}
return 0;
}
在这个示例中,程序尝试将字符串 "12345abc"
转换为十进制数。转换将在遇到字符 'a'
时停止,并且 endptr
将指向该字符。程序将输出转换结果和第一个无效字符。
没有搜到相关的沙龙