Для печати в базе N вам необходимо внести три изменения:
- Вместо деления на 10 во второй строке, делим на N
- Вместо того, чтобы делать мод 10 в третьей строке, делайте базу модов N
- Вам нужно будет преобразовать модуль из строки 2 в соответствующий символ. Если вы делаете base> 10, вам нужно будет выполнить if / else
Вот как это выглядит при использовании простых целых чисел. Я позволю вам внести соответствующие изменения, чтобы использовать вашу большую библиотеку int:
static void
print_pos( FILE* f, int n, int base )
{
if (n < 0)
{
n *= -1;
putc( '-', f );
}
if (n >= base)
print_pos( f, n / base, base );
int d = n % base;
const char *digits = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
putc( digits[d], f );
}
Несколько последних комментариев.
- Ваш исходный код забудьте об отрицательных числах.
- Эта функция работает до базы 36. Если вам нужны еще большие базы, вам нужно расширить строку
char c = ...
.