работа с массивами символов в C - PullRequest
0 голосов
/ 02 февраля 2012

Я пишу метод, который превращает десятичное число в любое основание (2-36) и выводит соответствующие символы на экран. Метод decimalToSymbol() работает правильно. Проблема в том, что в цикле while я присваиваю ans[i] для char, и когда я пытаюсь напечатать его сразу после того, как он 0. Я посмотрел в Интернете и обнаружил, что это правильный способ присвоения char, но я не уверен, что происходит не так.

void writeRadixB(int decimalNumber, int radixB)
{
        char ans[80] = ""; 
        int i = 0;
        while(decimalNumber!= 0){ 
                printf("decNum: %d div by rB: %d equals %d\n", decimalNumber, radixB, decimalN
                printf("decNum: %d mod by rB: %d equals %d or char %c\n", decimalNumber, radix
                printf("i: %d\n", i); 
                decimalNumber = decimalNumber/radixB;
                ans[i] = decimalToSymbol(decimalNumber%radixB);
                printf("ans[%d] is %c\n", i, ans[i]);
                i++;
        }   
        printf("(%s) radix %d", ans, radixB);
}

Ответы [ 2 ]

1 голос
/ 02 февраля 2012

Вы не должны изменять десятичное число до тех пор, пока вы не извлечете свою цифру.Это, и ваш результат обратный.

0 голосов
/ 02 февраля 2012

Вы должны поставить строку ans[i] = decimalToSymbol(decimalNumber%radixB); перед строкой decimalNumber = decimalNumber/radixB;, (чтобы не потерять цифру). Кроме того, вы, вероятно, хотите перевернуть строку перед ее печатью.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...