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?

War es hilfreich?

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.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top