如何在C中的向量中放入整数的数字?

时间:2017-03-19 11:03:49

标签: c arrays binary decimal base-conversion

我在C中编写了一个将二进制数转换为十进制数的函数:

while (n != '\n')
{
    scanf("%c",&n);
    if (n == '1')
        var = var * 2 + 1;
    else if (n == '0')
        var *= 2;
}

现在我想知道如何将每个小数位数放在char数组中。

Ex: var = 145 是转换后的数字,因此数组应如下所示:

char array[n_bit]={1,4,5};

1 个答案:

答案 0 :(得分:0)

这应该做你需要的(至少我理解):

// returns the number of decimal digits in 'num'
unsigned int getNumDigits(unsigned int num)
{
    unsigned int res = 1; // when the 'num' is 0, the number of digits is 1
    num /= 10; 

    while (num)
    {
       res++;
       num /= 10;
    }

    return res;
}

// fill the 'array' with chars which represent the digits in the given 'inputNum'
// so that if inputNum=135, array[0]='1', array[1]='3' and array[2]='5'
// assuming 'array' contains nothing but '\0's when given as input
int fillDecimalVector(unsigned int inputNum, char array[], size_t arr_size)
{
   unsigned int fillIdx = 0;
   unsigned int numOfDigits = getNumOfDigits(inputNum);

   if (numOfDigits > arrSize)
       return -1;

   // when the 'inputNum' initial value is 0 we are expected to fill '0'
   while (inputNum || !fillIdx)
   {
       array[numOfDigits - fillIdx - 1] = '0' + (char)(inputNum % 10);
       fillIdx++;
       inputNum /= 10;
   }

   return 0;
}

注意

我没有尝试编译它,因此可能会出现轻微的语法错误。