В то время как я работаю, где-нибудь в коде я видел следующий 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 );
кто-либо мог объяснить?
. *
означает, что точность указывается не в строке формата, а как дополнительный аргумент целочисленного значения, предшествующий аргументу, который должен быть отформатирован. (d_number)
* заменяется на (int) sizeof (dec_number). Если dec_number является целым числом, на многих машинах это то же самое, что и% 0.4d. Это точность , с которой нужно напечатать целое число или максимальное количество цифр для печати.
* может стоять по обе стороны от «.», Например:
sprintf(tmp_buf, "%*.*", 0, (int)sizeof(dec_number), d_number);
также работает.