Schreibt formatierte Daten in den angegebenen Puffer. Alle Argumente werden entsprechend der entsprechenden Formatspezifikation in der Formatzeichenfolge in den Ausgabepuffer konvertiert und in den Ausgabepuffer kopiert. Die Funktion fügt ein endendes NULL-Zeichen an die Zeichen an, die er schreibt, aber der Rückgabewert enthält nicht das endende Nullzeichen in der Zeichenanzahl.
Der Puffer, der die formatierte Ausgabe empfängt. Die maximale Größe des Puffers beträgt 1.024 Byte.
[in] unnamedParam2
Typ: LPCTSTR-
Die Formatsteuerelementspezifikationen. Zusätzlich zu normalen ASCII-Zeichen wird in dieser Zeichenfolge eine Formatspezifikation für jedes Argument angezeigt. Weitere Informationen zur Formatspezifikation finden Sie im Abschnitt "Hinweise".
...
Mindestens ein optionales Argument. Die Anzahl und der Typ der Argumentparameter hängen von den entsprechenden Formatsteuerelementspezifikationen im lpFmt Parameter ab.
Rückgabewert
Typ: int
Wenn die Funktion erfolgreich ist, ist der Rückgabewert die Anzahl der Zeichen, die im Ausgabepuffer gespeichert sind, und nicht das endende Nullzeichen zu zählen.
Wenn die Funktion fehlschlägt, ist der Rückgabewert kleiner als die Länge der erwarteten Ausgabe. Rufen Sie GetLastErrorauf, um erweiterte Fehlerinformationen zu erhalten.
Bemerkungen
Die Formatsteuerelementzeichenfolge enthält Formatspezifikationen, die das Ausgabeformat für die Argumente nach dem lpFmt Parameter bestimmen. Formatspezifikationen, die unten erläutert werden, beginnen immer mit einem Prozentzeichen (%). Wenn auf ein Prozentzeichen ein Zeichen folgt, das keine Bedeutung als Formatfeld hat, wird das Zeichen nicht formatiert (z. B. %% erzeugt ein einzelnes Prozentzeichenzeichen).
Die Formatsteuerelementzeichenfolge wird von links nach rechts gelesen. Wenn die erste Formatspezifikation (falls vorhanden) aufgetreten ist, wird der Wert des ersten Arguments nach der Formatsteuerelementzeichenfolge konvertiert und gemäß der Formatspezifikation in den Ausgabepuffer kopiert. Die zweite Formatspezifikation bewirkt, dass das zweite Argument konvertiert und kopiert wird usw. Wenn mehr Argumente als Formatspezifikationen vorhanden sind, werden die zusätzlichen Argumente ignoriert. Wenn nicht genügend Argumente für alle Formatspezifikationen vorhanden sind, sind die Ergebnisse nicht definiert.
Eine Formatspezifikation weist das folgende Formular auf:
%[-][#][0][Breite][Genauigkeit]Typ
Jedes Feld ist ein einzelnes Zeichen oder eine Zahl, die eine bestimmte Formatoption anschreibt. Der Typ Zeichen, die nach dem letzten optionalen Formatfeld angezeigt werden, bestimmen, ob das zugeordnete Argument als Zeichen, eine Zeichenfolge oder eine Zahl interpretiert wird. Die einfachste Formatspezifikation enthält nur das Prozentzeichen und ein Typzeichen (z. B. %s). Die optionalen Felder steuern andere Aspekte der Formatierung. Nachfolgend sind die optionalen und erforderlichen Felder und deren Bedeutung aufgeführt.
Feld
Bedeutung
-
Platzieren Sie die Ausgabe mit Leerzeichen oder Nullen nach rechts, um die Feldbreite auszufüllen und die Ausgabe links zu rechtfertigen. Wenn dieses Feld nicht angegeben wird, wird die Ausgabe links aufgefüllt und rechtsbündig dargestellt.
#
Präfix hexadezimale Werte mit 0x (Kleinbuchstabe) oder 0X (Großbuchstaben).
0
Legen Sie den Ausgabewert mit Nullen ein, um die Feldbreite auszufüllen. Wenn dieses Feld nicht angegeben wird, wird der Ausgabewert mit Leerzeichen aufgefüllt.
Breite
Kopieren Sie die angegebene Mindestanzahl von Zeichen in den Ausgabepuffer. Die Breite Felds ist eine nicht negative ganze Zahl. Die Breiteangabe bewirkt niemals, dass ein Wert abgeschnitten wird; Wenn die Anzahl der Zeichen im Ausgabewert größer als die angegebene Breite ist oder wenn die Breite Feld nicht vorhanden ist, werden alle Zeichen des Werts gedruckt, vorbehaltlich der Genauigkeitsspezifikation.
.Genauigkeits-
Kopieren Sie für Zahlen die angegebene Mindestanzahl von Ziffern in den Ausgabepuffer. Wenn die Anzahl der Ziffern im Argument kleiner als die angegebene Genauigkeit ist, wird der Ausgabewert links mit Nullen aufgefüllt. Der Wert wird nicht abgeschnitten, wenn die Anzahl der Ziffern die angegebene Genauigkeit überschreitet. Wenn die angegebene Genauigkeit 0 ist oder vollständig weggelassen wird oder wenn der Punkt (.) ohne eine Zahl angezeigt wird, auf die sie folgt, wird die Genauigkeit auf 1 festgelegt.
Kopieren Sie für Zeichenfolgen die angegebene maximale Anzahl von Zeichen in den Ausgabepuffer.
Typ
Gibt das entsprechende Argument als Zeichen, eine Zeichenfolge oder eine Zahl aus. Dieses Feld kann eine der folgenden Werte sein.
c
Einzelnes Zeichen. Dieser Wert wird als Typ CHAR von wsprintfA interpretiert und WCHAR- von wsprintfWeingegeben. Beachten Siewsprintf ein Makro ist, das als wsprintfA- (Unicode nicht definiert) oder wsprintfW- (Unicode definiert) definiert ist.
C
Einzelnes Zeichen. Dieser Wert wird als Typ WCHAR- von wsprintfA interpretiert und CHAR von wsprintfWeingegeben. Beachten Siewsprintf ein Makro ist, das als wsprintfA- (Unicode nicht definiert) oder wsprintfW- (Unicode definiert) definiert ist.
d
Vorzeichen ganzzahliger Dezimalzahl. Dieser Wert entspricht i.
hc, hC
Einzelnes Zeichen. Wenn das Zeichen einen numerischen Wert von Null aufweist, wird es ignoriert.
Dieser Wert wird immer als Typ CHAR-interpretiert, auch wenn die aufrufende Anwendung Unicode definiert.
hd
Signiertes Argument mit kurzer ganzzahliger Vorzeichen.
hs, hS
Schnur. Dieser Wert wird immer als Typ LPSTRinterpretiert, auch wenn die aufrufende Anwendung Unicode definiert.
hu
Nicht signierte kurze ganze Zahl.
i
Vorzeichen ganzzahliger Dezimalzahl. Dieser Wert entspricht d.
Ix, IX
64-Bit-ganzzahlige hexadezimale Hexadezimalzahl in Klein- oder Großbuchstaben auf 64-Bit-Plattformen, 32-Bit-ganzzahlige hexadezimale Hexadezimalzahl in Klein- oder Großbuchstaben auf 32-Bit-Plattformen.
lc, lC
Einzelnes Zeichen. Wenn das Zeichen einen numerischen Wert von Null aufweist, wird es ignoriert.
Dieser Wert wird immer als Typ WCHAR-interpretiert, auch wenn die aufrufende Anwendung Unicode definiert.
ld
Lange ganze Zahl mit Vorzeichen. Dieser Wert entspricht li.
li
Lange ganze Zahl mit Vorzeichen. Dieser Wert entspricht ld.
ls, lS
Schnur. Dieser Wert wird immer als Typ LPWSTRinterpretiert, auch wenn die aufrufende Anwendung Unicode nicht definiert. Dieser Wert entspricht ws.
lu
Lange ganze Zahl ohne Vorzeichen.
lx, lX
Lange nicht signierte hexadezimale ganze Zahl in Klein- oder Großbuchstaben.
p
Zeiger. Die Adresse wird mit hexadezimal gedruckt.
s
Schnur. Dieser Wert wird als Typ LPSTR von wsprintfA interpretiert und LPWSTR von wsprintfW. Beachten Siewsprintf ein Makro ist, das als wsprintfA- (Unicode nicht definiert) oder wsprintfW- (Unicode definiert) definiert ist.
S
Schnur. Dieser Wert wird als Typ LPWSTR- von wsprintfA und typ LPSTR von wsprintfWinterpretiert. Beachten Siewsprintf ein Makro ist, das als wsprintfA- (Unicode nicht definiert) oder wsprintfW- (Unicode definiert) definiert ist.
u
Unsigned integer argument.
x, X
Nicht signierte hexadezimale ganze Zahl in Klein- oder Großbuchstaben.
Hinweis Es ist wichtig zu beachten, dass wsprintf die C-Anrufkonvention (_cdecl) anstelle der Standardanrufkonvention (_stdcall) verwendet. Daher liegt es in der Verantwortung des aufrufenden Prozesses, Argumente aus dem Stapel aufzufüllen, und Argumente werden vom Stapel von rechts nach links verschoben. In C-Sprachmodulen führt der C-Compiler diese Aufgabe aus.
Verwenden Sie _snwprintf, um Puffer zu verwenden, die größer als 1024 Byte sind. Weitere Informationen finden Sie in der Dokumentation für die C-Laufzeitbibliothek.
Anmerkung
Der winuser.h-Header definiert wsprintf als Alias, der automatisch die ANSI- oder Unicode-Version dieser Funktion basierend auf der Definition der UNICODE-Präprozessorkonstante auswählt. Das Mischen der Verwendung des codierungsneutralen Alias mit Code, der nicht codierungsneutral ist, kann zu Nichtübereinstimmungen führen, die zu Kompilierungs- oder Laufzeitfehlern führen. Weitere Informationen finden Sie unter Konventionen für Funktionsprototypen.