在任务中,我需要将十六进制指针的地址打印到标准输出中。问题是我只允许包含
unistd.h
,所以不允许包含 printf
。
我尝试将其转换为 char* 但转换是完全不可能实现的。因此,在这里非常感谢您的帮助。
它应该打印类似这样的内容:
000000010a161f40
这是一个执行此操作的函数示例:
size_t my_putchar(char c)
{
if (write(1, &c, 1) == -1)
return (0);
return (1);
}
size_t my_puthex(unsigned long long nb, bool toUp)
{
size_t len = 0;
const char *base = (toUp) ? "0123456789ABCDEF" : "0123456789abcdef";
if (nb < 16) {
len += my_putchar(base[nb]);
return (len);
} else {
len += my_puthex(nb / 16, toUp);
len += my_bputchar(base[nb % 16]);
}
return (len);
}
用途:
my_puthex(1724, false);
my_puthex(1724, true);
输出:
6bc
6BC
但是,输入值必须是无符号整数。