padding with sprintf
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".
The padding and width come before the type specifier:
sprintf( buf, "%030d", my_val );
"%030d"
is the droid you are looking for