【发布时间】: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元素(空终止符的空间)。 -
我不明白你如何比较 atoi 和 sprintf,第一个从字符串中提取(差)一个数字,第二个是使用时反向操作。不是 sprintf 不会“转换”而是打印/写入
-
@bruno。谢谢你,它现在已经编译了。现在看看它是否有效(我的意思是
itoa:) -
这是一个众所周知的 CS50 练习。对于本练习,最好将卡片“数字”读取为字符串并对其进行操作,而不是将它们读取为数字。
标签: c string long-long asprintf