如何将字符串转换为long long
int main() {
char **ptr;
long long val1 = strtoumax("1234567890123456",ptr, 10);
printf("%ull\n",val1);
}
它的打印仅为1015724736ll。如何打印1234567890123456
答案 0 :(得分:4)
使用strtoll,strtoumax用于转换为uintmax_t,通常不会很长。
请注意,你的printf格式说明符也是错误的,没有“%ull”这样的东西。 “%ull”将被解释为格式specfier“%u”和普通字符串“ll”。传递一个long long来格式化为unsigned int(“%u”)可能会给你带来不可预测的结果。
您需要使用
printf("%lld\n", val1);
如果你有一个unsigned long long,你可以使用“%llu”
答案 1 :(得分:2)
使用unsigned long long
代替long long
使用strtoull
代替strtoumax
使用printf("%llu\n",val1);
答案 2 :(得分:1)
有很多问题。
而不是printf("%ull\n",val1);
使用printf("%llu\n",val1);
。把“ll”放在首位。
ptr
应该是char *ptr
,然后是foo(..., &ptr, 10)
。 (这可以防止错误的事情,因为这些参数需要指向您拥有的内存。)
long long val1
应为unsigned long long val1
- 您似乎想在其余代码中使用无符号整数
strtoumax
应为strtoull
- 以匹配目标类型unsigned long long
。
答案 3 :(得分:0)