C спецификатор формата

В то время как я работаю, где-нибудь в коде я видел следующий staements. Я запутываюсь спецификатором формата в 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  );

кто-либо мог объяснить?

5
задан Vijay 8 February 2010 в 11:13
поделиться

2 ответа

. * означает, что точность указывается не в строке формата, а как дополнительный аргумент целочисленного значения, предшествующий аргументу, который должен быть отформатирован. (d_number)

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

6
ответ дан 14 December 2019 в 13:35
поделиться

* заменяется на (int) sizeof (dec_number). Если dec_number является целым числом, на многих машинах это то же самое, что и% 0.4d. Это точность , с которой нужно напечатать целое число или максимальное количество цифр для печати.

* может стоять по обе стороны от «.», Например:

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

также работает.

0
ответ дан 14 December 2019 в 13:35
поделиться
Другие вопросы по тегам:

Похожие вопросы: