Pregunta

Mientras trabajo, en algún lugar dentro del código vi los siguientes staements. Me estoy confundido por el especificador de formato en 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  );

podría alguien explicar por favor?

¿Fue útil?

Solución

.* significa la precisión no se especifica en la cadena de formato, sino como un argumento adicional valor entero que precede al argumento de que tiene que ser formateado. (D_number)

http://www.cplusplus.com/reference/clibrary/cstdio/ printf /

Otros consejos

El * se sustituye por (int) sizeof (dec_number). Si dec_number es un int, en muchas máquinas es el mismo que el 0.4D%. Este es el precisión con el que se imprime el número entero o el número máximo de dígitos a imprimir.

El * puede aparecer en cualquier lado de la, por ejemplo "":

sprintf(tmp_buf, "%*.*", 0, (int)sizeof(dec_number), d_number);

también funciona.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top