【发布时间】:2016-08-07 13:12:29
【问题描述】:
我有一个 C 语言的整数,我想创建一个 char 数组并每次使用模 10 插入最后一个数字。之后,我需要从头到尾打印数组,以便在正确的顺序。我知道这听起来很奇怪,但我需要这样做。
但是有些东西不起作用。数组创建得很好,但是字符打印不起作用。这就是我所做的:
int baseChange (int base, int newBase, int num)
{
int baseTen = toBaseTen(base, num); //give me a number on base 10
char finalBase[24];
int i;
for (i = 0; baseTen != 0; i++)
{
int remain = baseTen % newBase;
finalBase[i] = (char)(remain); //insert the last digit to the array
baseTen /= newBase;
}
// Print finalBase from end to beginning in order to get the final number in the correct order:
for (i--; i >= 0; i--)
{
printf("i is: %d... %c", i, finalBase[i]);
}
return SUCCESS_EXIT;
}
如果我在第一个 for 循环期间打印 finalBase[i],我会得到正确的数字,但在那之后,第二个 for 循环不会打印任何内容。为什么?
【问题讨论】:
-
试试
finalBase[i] + '0' -
第一个循环后
i是什么?第一个循环开始时的baseTen是什么?toBaseTen是做什么的?整个算法似乎存在根本缺陷:整数只是一个整数 - 没有基数或字符,只有原始位。当您将整数表示为字符串时,您在给定的基数中这样做。事实上,你有一个函数,它接受一个整数,并返回一个整数,但声称要改变它的 base 绝对是零意义。 -
或者把
%c改成%d。