【问题标题】:How do I convert a long long into a string?如何将 long long 转换为字符串?
【发布时间】:2020-12-02 06:44:44
【问题描述】:

我正在创建一个程序,该程序将用户的数字输入作为 long long,然后涉及一些与单个数字有关的数学运算。我认为最好的方法是将 long long 转换为字符串,然后遍历各个部分。

我尝试过使用atoi,但没有成功,现在我正在使用sprintf,如下所示...

if (count == 13 || count == 15 || count == 16)
    {
        char str_number[count];
        // Converting long card_number to a string (array of chars)
        sprintf(str_number, "%lld", card_number);
        printf("card number is: %s\n");
        return 0;
    }

这也不起作用。

谁能让我走上正轨?

【问题讨论】:

  • printf("card number is: %s\n"); 你的意思是printf("card number is: %s\n", str_number); 否则行为未定义,因为%s 的参数丢失
  • 还要注意,如果count 是您拥有的位数,那么您的str_number 数组中需要count+1 元素(空终止符的空间)。
  • 我不明白你如何比较 atoisprintf,第一个从字符串中提取(差)一个数字,第二个是使用时反向操作。不是 sprintf 不会“转换”而是打印/写入
  • @bruno。谢谢你,它现在已经编译了。现在看看它是否有效(我的意思是itoa :)
  • 这是一个众所周知的 CS50 练习。对于本练习,最好将卡片“数字”读取为字符串并对其进行操作,而不是将它们读取为数字。

标签: c string long-long asprintf


【解决方案1】:

printf("card number is: %s\n");

你错过了在参数中给出 str_number,行为未定义,做

printf("card number is: %s\n", str_number);

请注意,如果您的 long long 位于 64b 上,则字符串大小为 21(如果足够),因为较长的字符串用于 -4611686018427387903,最终的空字符需要多 20 个字符。


根据您的评论:

将 long 转换为字符串的最佳方法是什么?

没有标准的lltoa所以sprintf族是正确的方法,注意如果你害怕写出数组你可以使用snprintf em>

【讨论】:

  • 谢谢布鲁诺。将 long 转换为字符串的最佳方法是什么?
  • @EdCase 对我来说 sprintf (或 snprintf ...)是正确的方法,而且是便携式的
猜你喜欢
  • 2019-06-21
  • 1970-01-01
  • 2016-04-06
  • 2013-12-27
  • 2023-03-22
  • 2013-11-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多