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?

Foi útil?

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top