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

时间:2011-02-10 20:33:51

标签: c

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

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

4 个答案:

答案 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;
}