#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';
.