在c中将整数转换为整数数组

时间:2017-02-16 20:08:19

标签: c type-conversion

如何将整数值转换为整数数组格式?

例如:

int answer = 140;

我希望获得的预期价值是:

int arr_answer[] = { 1, 4, 0};

3 个答案:

答案 0 :(得分:1)

如果您提前知道了数字位数(在本例中为3),您可以这样做:

#include <stdio.h>

int main()
{
    const int numDigits = 3;
    int answer = 140;
    int digits[numDigits];

    int i = numDigits - 1;
    while (answer > 0)
    {
        int digit = answer % 10;
        answer /= 10;
        digits[i] = digit;
        printf("digits[%d] = %d\n", i, digits[i]);
        i--;
    }

    return 0;
}

输出:

digits[2] = 0
digits[1] = 4
digits[0] = 1

答案 1 :(得分:1)

一种选择是计算数字并使用variable length array 1

#include <stdio.h>

int main(void){
    int ans = 140;
    int x = ans;
    size_t i, size = 0;

    while ( x ) {
       x=x/10;
       size++;
    }

    int arr_answer[size];

    for ( i = size - 1, x = ans ; x ; x = x/10, i-- ) {
       arr_answer[i] = x % 10;
    }

    for ( i=0 ; i < size ; i++ ) {
       printf("%d ", arr_answer[i]);
    }
}

显然,如果你可以使用足够大的固定大小的数组,你就不需要计算size,从而避免第一次循环。 但这可能是制作精确大小数组的唯一方法。或者,您也可以使用malloc()(如果您不需要使用数组)来分配内存块,如果数字位数可能很大(并且您&# 39; d也需要以不同的方式存储它们 - int可以容纳有限范围的值。

1 自C99起可用的VLA是C11中的可选功能。

答案 2 :(得分:0)

我不是C程序员,因此我无法提供具体代码,但我尝试1)整数到字符串转换(Google表示试试sprintf()),2)运行for循环表示整数/字符串的长度并分配给数组。我最终会做这样的事情:

integer_String = convertToString(integer)
for (integer_String.length()) {assign to array}

将它包装在一个返回数组的函数中可能很好。

编辑:无视哈哈其他答案更好。