EnzoFerber
(usa FreeBSD)
Enviado em 17/01/2012 - 22:56h
Opa,
#include <stdio.h>
#include <string.h>
#include <unistd.h>
char *buildnum ( int number, int n, char pad )
{
char *str = (char *)malloc((n+1)*sizeof(char)), *a = str;
a[n] = 0x0;
while ( (number) && (*(a++) = (number%10) + 48) ) (number /= 10) ;
while ( *a ) *(a++) = pad;
return str;
}
int main ( void )
{
printf ( "# %s\n", buildnum(99,3,'0'));
printf ( "# %s\n", buildnum(99,9,'0'));
return 0;
}
Output:
# 990
# 990000000
Com esse código, você pode construir seus números tranquilamente.
Você chama a função assim:
char *numero = buildnum ( NUMERO, NUMERO_DE_CASAS, CARACTERE_USADO_NO_FINAL);
É isso ai que você queria?
Não tem como usar o printf() para fazer isso. O compilador não altera valor de número, e um padding de zeros que não altera um número é só do lado esquerdo.
Ou seja:
99 = 099 = 00000000000000000000000000000000000[n*0]99
99 != 990
Sacou?
Espero ter ajudado,
Enzo Ferber
[]'s
P.S.:
http://codepad.org/hiWbQdE5