C especificador formato
-
19-09-2019 - |
Pergunta
Enquanto eu estou trabalhando, em algum lugar dentro do código i viram as seguintes staements.
Estou ficando confuso com o especificador de formato no sprintf
d_number = strtol( tmp_buf , (char **)NULL, 16);
memset( tmp_buf , ' ' , sizeof( tmp_buf ) );
sprintf( tmp_buf , "%0.*d" , (int)sizeof( dec_number ) , d_number );
Alguém poderia explicar por favor?
Solução
.*
significa que a precisão não é especificado na cadeia de formato, mas como um argumento valor inteiro adicional que precede o argumento de que tem de ser formatado. (D_number)
http://www.cplusplus.com/reference/clibrary/cstdio/ printf /
Outras dicas
A * é substituído por (int) sizeof (dec_number). Se dec_number é um int, em muitas máquinas é o mesmo que% 0,4D. Esta é a precisão com o qual para imprimir o inteiro ou o número máximo de dígitos para imprimir.
O * pode aparecer em ambos os lados do, por exemplo "":
sprintf(tmp_buf, "%*.*", 0, (int)sizeof(dec_number), d_number);
também funciona.