Как получить цифры из значения int и добавить его в массив

#c

#c

Вопрос:

Я хочу добавить число (значение) цифра за цифрой в целевой массив, но как мне выполнить итерацию «i» в обратном направлении? Я говорю это, потому что я хочу использовать v / 10 ^ i% 10, который дал бы мне цифру в любом месте, которое я хочу, используя i, где i = 0 — цифра младшего порядка, а v — значение. Вот что я сделал до сих пор:

 value = va_arg( ap, int); 
       //value is the int value
       while(value > 0) {
          unsigned int digit1 = value / pow(10,i) % 10

          append( amp;dest, amp;len, amp;cap, digit1   048);

       }

  

Часть добавления можно игнорировать, поскольку она не имеет отношения к проблеме, за исключением последнего параметра. Последний параметр ожидает символ. Я не установил «i», поскольку я не уверен, как выполнить итерацию i. Буду признателен за любую помощь.

Ответ №1:

Количество цифр будет наименьшим целым числом, большим log10(value) . Таким образом, вы точно знаете, какие элементы вашего массива будут заполнены.

Альтернативно, вы могли бы формировать свой массив постепенно, а затем изменять его, если хотите, в обратном порядке.

Комментарии:

1. Но как бы ваше первое утверждение помогло мне с формулой: v / 10 ^ i% 10?

Ответ №2:

Некоторый приведенный ниже код будет работать без использования библиотечных функций.

 int value = 234873485;
int digit;
int tmpValue = value;
int i = 0;
int arr[10] = {0};

while (tmpValue > 1) {
    tmpValue /= 10;
    i  ;
}

tmpValue = value;

while (tmpValue > 1) {
    digit = tmpValue % 10;
    printf("%dn", digit); // may be replaced to append array
    arr[i--] = digit;      // something like this one
    tmpValue /= 10;
}
  

Комментарии:

1. Но это не помогает мне с моей проблемой. Я пытаюсь получить цифры, а затем сохранить их в массив, используя имеющуюся у меня функцию добавления, которая позволяет вводить посимвольный ввод.

2. Ну, тогда вам нужно заменить int arr[] на char arr[] и изменить строку добавления как arr[i--] = digit '0'; .