如何在c中将字符串转换为long long

时间:2013-08-23 12:06:15

标签: c

如何将字符串转换为long long

int main() {
  char **ptr;
  long long val1 = strtoumax("1234567890123456",ptr, 10);
  printf("%ull\n",val1);
}

它的打印仅为1015724736ll。如何打印1234567890123456

4 个答案:

答案 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)

  1. 使用unsigned long long代替long long

  2. 使用strtoull代替strtoumax

  3. 使用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)

您可以使用strtoll

对于printf中的格式说明符,请使用%llu代表无符号,val1不是。

如果unsigned long long符合您的要求,请声明val1,然后相应地使用strtoull