如何将整数值转换为整数数组格式?
例如:
int answer = 140;
我希望获得的预期价值是:
int arr_answer[] = { 1, 4, 0};
答案 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}
将它包装在一个返回数组的函数中可能很好。
编辑:无视哈哈其他答案更好。