Вы можете сделать что-то вроде этого:
printf("%03d", x % 100000000);
%03d
указывает printf
заполнять нулями слева до тех пор, пока длина вывода не станет минимум 3 символа.
Другая часть довольно проста, вы хотите максимум 8 справа? Просто посмотрите на остаток.
Если ваш ввод не помещается в целое число, просто замените int
на long long
, а затем замените %03d
на %03lld
, поскольку lld
является спецификатором для long long int
(или просто ld
для long int
).
Все это предполагает, что ваши значения всегда строго положительны (в этом случае вы также можете использовать переменные unsigned
, где спецификатор d
заменяется на u
). Если ваши значения подписаны, и вы хотите, чтобы конечный результат был длиной 8 символов (без минуса), вы можете просто применить условный оператор:
printf("%03d", (x < 0 ? x % 10000000 : x % 100000000));