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?

È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top