Ich habe gerade den klassischen K & amp; R gelesen und bin der folgenden Syntax begegnet:
%Vor% Was bedeutet "."
hier? Wenn ich hier nicht "."
anwende, wird die ganze Zeichenfolge gedruckt, aber wenn wir keine "."
anwenden, werden maximal maximale Zeichen gedruckt wäre wirklich dankbar, wenn jemand das erklären könnte.
In %.*s
begrenzt die .*
die Anzahl der Bytes, die geschrieben werden. Wenn dies mit einer eingeschlossenen Zahl wie %.34s
geschrieben würde, wäre die Zahl das Limit. Wenn ein Sternchen verwendet wird, wird das Limit aus dem entsprechenden Argument in printf
genommen.
Ab C 2011 (N1570) 7.21.6.1 4, die Umrechnungsspezifikationen für fprintf
usw. :
Eine optionale Genauigkeit, die ... die maximale Anzahl von Bytes angibt, die für s Konvertierungen geschrieben werden müssen. Die Genauigkeit hat die Form einer Periode (. ), gefolgt von einem Sternchen ( * (wird später beschrieben) oder einer optionalen dezimalen Ganzzahl; Wenn nur die Periode angegeben ist, wird die Genauigkeit als Null angenommen.
Er gibt die maximale Feldbreite für die Zeichenkette an
Die Genauigkeit innerhalb eines String-Formats gibt die maximale Feldbreite an:
%2.6s
gibt eine minimale Breite von 2 und eine maximale Breite von 6 Zeichen an. Wenn die Zeichenfolge größer als 6 Zeichen ist, wird sie abgeschnitten.
Eine Printf-Format-Zeichenfolge ermöglicht die Angabe von Breite und Genauigkeit.
Width, wie %25s
, weist printf
an, die Zeichenfolge auf die Breite von 25 Zeichen aufzufüllen und Leerzeichen vor der Zeichenfolge einzufügen. (Wenn die Zeichenfolge breiter als 25 Zeichen ist, wird sie immer noch vollständig gedruckt.)
Eine auf ein Zeichenfolgenformat wie " %.25s
" angewendete "Genauigkeit" begrenzt die Länge der gedruckten Zeichenfolge auf 25 Zeichen. Eine Zeichenfolge mit 3 Zeichen wird vollständig (ohne Auffüllung) gedruckt, und einer Zeichenfolge mit 30 Zeichen fehlen die letzten fünf Zeichen.
%.*s
verhindert das Festschreiben der Genauigkeit im Format und spezifiziert es stattdessen als Ganzzahl-Argument für printf
, in Ihrem Fall max
.
Zunächst ist K & amp; R die ursprüngliche Implementierung von C, die sich von der aktuellen Spezifikation unterscheidet. Wenn Sie spezifische Informationen über K & amp; R C wünschen, konsultieren Sie die spezifische Dokumentation.
Aus dem aktuellen C-Standard:
Eine optionale Genauigkeit, die (...) die maximale Anzahl an Bytes angibt, die für s-Konvertierungen geschrieben werden müssen. Die Genauigkeit hat die Form einer Periode (.), Gefolgt von einem Sternchen * (wird später beschrieben) oder einer optionalen Dezimalzahl.
Eine ähnliche Dokumentation ist überall online für mehrere Standards oder Implementierungen verfügbar:
Punkt hat unterschiedliche Bedeutung mit verschiedenen Formatzeichenfolgen. Wenn Sie a.b mit% f verwenden, gibt b die Länge an. a gibt die Anzahl der Dezimalpunkte an. Wenn Sie a.b mit% s verwenden, gibt a die Mindestlänge der Zeichenfolge an. während b die maximale Länge der zu druckenden Zeichenfolge angibt.
Tags und Links c