Я пытаюсь найти хороший способ напечатать ведущие 0, например, 01001 для почтового индекса. Хотя число будет храниться как 1001, что является хорошим способом сделать это?
Я подумал об использовании операторов case / if затем, чтобы выяснить, сколько цифр это число, а затем преобразовать его в массив символов с дополнительными нулями для печати, но я не могу не думать, что может быть способ сделать это с Синтаксис формата printf, который ускользает от меня.
Правильным решением является сохранение почтового индекса в базе данных в виде STRING. Несмотря на то, что это может выглядеть как число, это не так. Это код, в котором каждая часть имеет значение.
Число - это то, над чем вы делаете арифметику. Почтовый индекс не тот.
источник
Вы ставите ноль перед минимальной шириной поля:
источник
Почтовый индекс является сильно локализованным полем, многие страны имеют символы в своих почтовых индексах, например, Великобритания, Канада. Поэтому в этом примере вы должны использовать поле string / varchar для его хранения, если в любой момент вы будете отправлять или получать пользователей / клиентов / клиентов / и т. Д. Из других стран.
Однако в общем случае вы должны использовать рекомендуемый ответ (
printf("%05d", number);
).источник
Если вы работаете на компьютере * NIX:
Это покажет страницу руководства, похожую на:
Даже если вопрос для C, эта страница может быть полезна.
источник
man
команде числовой аргумент , она сузится до этого конкретного раздела. Без этого вы получите man-страницу для команды оболочкиprintf
вместо функции C.Здесь «05» говорит «используйте 5 цифр с ведущими нулями».
источник
printf допускает различные варианты форматирования.
например:
источник
Вы избавите себя от неприятностей (в долгосрочной перспективе), если будете хранить почтовый индекс в виде строки символов, а не числа, которым он не является.
источник
Более гибкий. Вот пример печати строк с выравниванием по правому краю с фиксированной шириной и пробелами.
Функция и макрос разработаны так, чтобы printfs были более читабельными.
источник
#define FMT(x) (getFmt(8,x).c_str())
(обратите внимание на параметр x !), А не на переменную (что и делает ваш код).Если вам нужно сохранить почтовый индекс в массиве символов zipcode [], вы можете использовать это:
источник