Printing leading 0's in C
I'm trying to find a good way to print leading 0
, such as 01001
for a ZIP Code. While the number would be stored as 1001
, what is a good way to do it?
I thought of using either case
statements or if
to figure out how many digits the number is and then convert it to an char
array with extra 0
's for printing, but I can't help but think there may be a way to do this with the printf
format syntax that is eluding me.
printf("%05d", zipCode);
The 0
indicates what you are padding with and the 5
shows the width of the integer number.
Example 1: If you use "%02d"
(useful for dates) this would only pad zeros for numbers in the ones column. E.g., 06
instead of 6
.
Example 2: "%03d"
would pad 2 zeros for one number in the ones column and pad 1 zero for a number in the tens column. E.g., number 7 padded to 007
and number 17 padded to 017
.
The correct solution is to store the ZIP Code in the database as a STRING. Despite the fact that it may look like a number, it isn't. It's a code, where each part has meaning.
A number is a thing you do arithmetic on. A ZIP Code is not that.
You place a zero before the minimum field width:
printf("%05d", zipcode);
sprintf(mystring, "%05d", myInt);
Here, "05" says "use 5 digits with leading zeros".