因此,我编写了一个使用递归将十进制数转换为十六进制数的函数,但我似乎无法弄清楚如何将前缀“0x”和前导零添加到转换后的十六进制数中。假设我将数字 18 传递给我的函数的参数。等效的十六进制数应为 0x00000012。但是,我最终只能得到 12 作为我的十六进制数。当我传入一个十六进制数 0xFEEDDAD 时也是如此。我最终只得到没有前缀的 FEEDDAD 作为我的答案。有人可以帮我解决这个问题吗?我在下面列出了我的代码。另外,我只能使用 fputc 来显示我的输出。
const char digits[] = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
void hexout (unsigned long number, FILE * stream)
{
long quotient;
long remainder;
quotient = number / 16;
remainder = number % 16;
if(quotient != 0)
hexout(quotient,stream);
fputc(digits[remainder],stream);
}