Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

padding with sprintf

Tags:

c++

c

string

printf

I have a dummy question. I would like to print an integer into a buffer padding with 0 but I cannot sort it out the sprintfformat. I am trying the following

char buf[31];
int my_val = 324;
sprintf( buf, "%d030", my_val );

hoping to have the following string

"000000000000000000000000000324"

what am I doing wrong? It doesn't mean pad with 0 for a max width of 30 chars?

like image 375
Abruzzo Forte e Gentile Avatar asked May 24 '11 21:05

Abruzzo Forte e Gentile


3 Answers

"%030d" is the droid you are looking for

like image 179
Seth Robertson Avatar answered Sep 21 '22 08:09

Seth Robertson


You got the syntax slightly wrong; The following code produces the desired output:

char buf[31];
int my_val = 324;
sprintf( buf, "%030d", (int)my_val );

From Wikipedia's Article on Printf:

[...] printf("%2d", 3) results in " 3", while printf("%02d", 3) results in "03".
like image 41
Sreerac Avatar answered Sep 21 '22 08:09

Sreerac


The padding and width come before the type specifier:

sprintf( buf, "%030d", my_val );
like image 25
Nick Meyer Avatar answered Sep 18 '22 08:09

Nick Meyer