例如,取123并将其放入一个数组,其中是[3] = {1,2,3}?
不将其转换为字符串并迭代它。
答案 0 :(得分:5)
您可以使用整数除法和模数来获取数字的十进制数字。
//Pseudo code
int[MAX_SIZE] result;
int index = 0;
while (workingNumber > 0)
{
digit = workingNumber % 10;
result[index] = digit;
workingNumber = workingNumber / 10; //Must be integer division
index++;
}
答案 1 :(得分:3)
#include <math.h>
...
int number = 5841;
int size = log10(number) + 1;
int arr[size];
int i = size;
while(i >= 0)
{
arr[--i] = number % 10;
number /= 10;
}
答案 2 :(得分:1)
首先,请记住,在C中,“char of char”和“string”之间唯一真正的区别是字符串,你将一个NUL-terminator放在char数组的末尾。
假设你想(例如)创建一个int(或long,或除char以外的其他东西)的数组,你通常会在除以10时取余数,并通过加'0'将其转换为数字。然后将数字除以10并重复直到它减小到零。这会创建从最小到最重要的数字,因此您通常将它们存放在数组的末尾并向后开始向后工作。
答案 3 :(得分:1)
#include <stdio.h>
#include <math.h>
#define LEN 3
int main(int argc,char* argv[])
{
int i = 123;
int a[LEN];
int digit;
int idx = log10(i);
do {
digit = i % 10;
i /= 10;
a[idx--] = digit;
} while (i != 0);
printf("a: { %d, %d, %d }\n", a[0], a[1], a[2]);
return 0;
}