如何在不使用字符串的情况下将整数转换为数字数组?

例如,取123并将其放入一个数组,其中是[3] = {1,2,3}?

不将其转换为字符串并迭代它。

您可以使用整数除法和模数来获取数字的十进制数字。

//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++; } 
 #include  ... int number = 5841; int size = log10(number) + 1; int arr[size]; int i = size; while(i >= 0) { arr[--i] = number % 10; number /= 10; } 

首先,请记住,在C中,“char of char”和“string”之间唯一真正的区别是字符串,你将一个NUL-terminator放在char数组的末尾。

假设你想(例如)创建一个int数组(或long,或除char之外的其他东西),你通常在除以10时取余数并通过加’0’将其转换为数字。 然后将数字除以10并重复直到它减小到零。 这会创建从最小到最重要的数字,因此您通常将它们存放在数组的末尾并向后开始向后工作。

 #include  #include  #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; }