Frage
Während ich arbeite, irgendwo in dem Code sah ich die folgenden staements.
Ich erhalte durch die Formatbezeichner in sprintf
verwirrt
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 );
könnte jemand erklären, bitte?
Lösung
.*
bedeutet, die Präzision in der Format-String nicht spezifiziert, sondern als zusätzliches Argument ganzzahligen Wert vor dem Argument, das formatiert werden muß. (D_number)
http://www.cplusplus.com/reference/clibrary/cstdio/ printf /
Andere Tipps
Der * wird ersetzt durch (int) sizeof (dec_number). Wenn dec_number ein int ist, auf vielen Maschinen ist es das gleiche wie% 0.4d. Dies ist die Genauigkeit , mit denen die Zahl oder die maximale Anzahl von Stellen drucken drucken.
Die * auf beiden Seiten des zum Beispiel auftreten kann „“:
sprintf(tmp_buf, "%*.*", 0, (int)sizeof(dec_number), d_number);
auch funktioniert.