Domanda
Mentre sto lavorando, da qualche parte dentro il codice ho visto i seguenti staements.
Mi sto confuso dal di formato in 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 );
Qualcuno potrebbe spiegare per favore?
Soluzione
.*
, la precisione non è specificato nella stringa di formato, ma come parametro aggiuntivo valore intero che precede l'argomento che deve essere formattata. (D_number)
http://www.cplusplus.com/reference/clibrary/cstdio/ printf /
Altri suggerimenti
Il * viene sostituito da (int) sizeof (dec_number). Se dec_number è un int, in molte macchine è lo stesso come% 0.4D. Questo è il di precisione con cui stampare il numero intero o il numero massimo di cifre da stampare.
Il * può apparire su entrambi i lati del, per esempio "":
sprintf(tmp_buf, "%*.*", 0, (int)sizeof(dec_number), d_number);
funziona anche.