Вывести число с ведущими нулями можно двумя способами:
Использование флага 0
и спецификатора ширины:
int zipcode = 123;
printf("%05d\n", zipcode); // Outputs 00123
Используя спецификатор точности:
int zipcode = 123;
printf("%.5d\n", zipcode); // Outputs 00123
Разница между ними заключается в обработке отрицательных чисел:
printf("%05d\n", -123); // Outputs -0123 (pad to 5 characters)
printf("%.5d\n", -123); // Outputs -00123 (pad to 5 digits)
Почтовые индексы вряд ли будут отрицательными, поэтому это не имеет значения.
Однако обратите внимание, что почтовые индексы могут содержать буквы и тире, поэтому их следует хранить в виде строк. Включение начальных нулей в строку очень просто, поэтому проблема решается гораздо проще.
Обратите внимание, что в обоих приведенных выше примерах значения ширины или точности 5
могут быть указаны как аргумент int
:
int width = 5;
printf("%0*d\n", width, 123); // Outputs 00123
printf("%.*d\n", width, 123); // Outputs 00123
Есть еще одна хитрость: точность 0
не приводит к выводу значения 0
:
printf("|%0d|%0d|\n", 0, 1); // Outputs |0|1|
printf("|%.0d|%.0d|\n", 0, 1); // Outputs ||1|
person
chqrlie
schedule
06.02.2021