Ich habe ein Code-Snippet, in dem es ein gibt
printf("%.*s\n")
Was bedeutet das %.*s
bedeuten?
c
printf
format-specifiers
Shaobo Wang
quelle
quelle
printf
Aufruf.Antworten:
Sie können ein Sternchen (
*
) verwenden, um den Breitenbezeichner / die Genauigkeit an zu übergebenprintf()
, anstatt ihn fest in die Formatzeichenfolge zu codieren, d. H.quelle
str_len
Argument einen Typ haben mussint
(oder einen engeren integralen Typ, zu dem befördert werden würdeint
). Es wäre ein Fehler passieren seinlong
,size_t
usw.%s
, darin besteht, eine Teilzeichenfolge der ursprünglichen Zeichenfolge zu drucken. In diesem Anwendungsfallstr
würde auf eine Stelle innerhalb der ursprünglichen Zeichenfolge verweisen (möglicherweise am Anfang) undstr_len
die Länge der zu druckenden Unterzeichenfolge angegeben.Detaillierter hier .
Wenn wir also beide Konvertierungsspezifikationen ausprobieren
wir bekommen die Ausgabe:
quelle
Ich denke nicht, dass der obige Code korrekt ist, aber (gemäß dieser Beschreibung von
printf()
) die.*
MittelEs ist also eine Zeichenfolge mit einer passablen Breite als Argument.
quelle
int
(oder eine Teilmenge davon) ist - nicht irgendein ganzzahliger Wert wie intuitiversize_t
oder seine möglichen Aliase wiestd::string::size_type
. Dies ist noch verwirrender, wenn man bedenkt, dass auf der Seite, auf die verwiesen wird,size_t
einer der unterstützten Typspezifizierer erwähnt wird.Siehe: http://www.cplusplus.com/reference/clibrary/cstdio/printf/
quelle