采用int并转换为数组的函数向后插入值?

时间:2012-09-16 00:12:53

标签: c

所以我有一个带数字的函数,我们只是说123用于测试目的,并通过将每个数字插入数组中的一个位置将其转换为数组。我的问题是:它向后做。因此,在这种情况下,123将打印为321.有关如何更改此问题的任何想法?

int i = 0;

while (number) {
    array[i] = number % 10;
    number /= 10;
    printf("%llu", array[i]);
    i++;
}

4 个答案:

答案 0 :(得分:5)

那是因为你在数字和10之间取了除数的余数,所以你要把最后一位数字插入到数组的第一个位置,依此类推。

您可以使用递归函数以您希望的方式填充数组。尝试这样的事情:

void
fillArray (int array[], int *i, int number) {
    if (number < 10 ) {
       array[*i] = number;
       *i = *i +1;
    } else {
       fillArray (array, i, number/10);
       array[*i] = number%10;
       *i = *i +1;
    }
}

最后,在i中你将拥有数组的大小。你应该像这样调用函数:

int array[100];
int i = 0;
int n = 123;
fillArray (array,&i,n);

答案 1 :(得分:2)

您可以随时反转数组,看完转换完成时的长度。

答案 2 :(得分:0)

我对如何更改它的想法:使用标准函数itoa()。如果这不是一个选项,您至少应该阅读itoa()

的源代码

答案 3 :(得分:0)

你也可以采取其他方式。 取第二个给定数字的log(n)。

enter code here int nd,f,i = 0;                  ND = LOG10(n)的                  F = POW(10,ND);

            while(n)
             {
                       array[i++]=n/f;
                       n=n%f;
             }