printf("%#x", number);
Обратите внимание, что это в точности , что вы хотите. Если значение числа равно 0, оно печатает 0, иначе оно печатает в шестнадцатеричном формате. Пример:
int x = 0;
int y = 548548;
printf("%#x %#x\n", x, y);
Результат:
0 0x85ec4