wprintf(3) | Library Functions Manual | wprintf(3) |
wprintf, fwprintf, swprintf, vwprintf, vfwprintf, vswprintf - Umwandlung der Ausgabe formatierter weiter Zeichen
Standard-C-Bibliothek (libc, -lc)
#include <stdio.h> #include <wchar.h>
int wprintf(const wchar_t *restrict format, …); int fwprintf(FILE *restrict datenstrom, const wchar_t *restrict format, …); int swprintf(wchar_t wzz[restrict .maxlänge], size_t maxlänge, const wchar_t *restrict format, …);
int vwprintf(const wchar_t *restrict format, va_list arg); int vfwprintf(FILE *restrict datenstrom, const wchar_t *restrict format, va_list arg); int vswprintf(wchar_t wzz[restrict .maxlänge], size_t maxlänge, const wchar_t *restrict format, va_list arg);
Alle oben aufgeführten Funktionen:
_XOPEN_SOURCE >= 500 || _ISOC99_SOURCE || _POSIX_C_SOURCE >= 200112L
Die wprintf()-Funktionsfamilie ist die Variante der printf()-Funktionsfamilie für weite Zeichen. Sie erzeugen eine formatierte Ausgabe von weiten Zeichen. (Bei weiten Zeichen wird jedes Zeichen in einem wchar_t gespeichert und nimmt daher mehr als nur ein Byte ein.)
Die Funktionen wprintf() und vwprintf() geben weite Zeichen auf stdout aus. Dazu darf stdout nicht byteorientiert sein (siehe die Funktion fwide(3) für weitere Informationen).
Die Funktionen fwprintf() und vfwprintf() geben weite Zeichen auf datenstrom aus. Dazu darf datenstrom nicht byteorientiert sein (siehe die Funktion fwide(3) für weitere Informationen).
Die Funktionen swprintf() und vswprintf() schreiben ihre Ausgabe in ein Feld von wchar_t. Der Programmierer muss sicherstellen, dass in wzz mindestens für maxlänge wchar_t Platz vorhanden ist.
Diese Funktionen entsprechen printf(3), vprintf(3), fprintf(3), vfprintf(3), snprintf(3) und vsprintf(3) mit den folgenden Unterschieden:
Die Behandlung der Konvertierungszeichen c und s unterscheidet sich:
Die Funktionen geben die Anzahl der geschriebenen weiten Zeichen zurück, ausschließlich des abschließenden weiten Nullzeichens im Fall der Funktionen swprintf() und vswprintf(). Im Fehlerfall wird -1 zurückgegeben.
Siehe attributes(7) für eine Erläuterung der in diesem Abschnitt verwandten Ausdrücke.
Schnittstelle | Attribut | Wert |
wprintf(), fwprintf(), swprintf(), vwprintf(), vfwprintf(), vswprintf() | Multithread-Fähigkeit | MT-Safe locale |
POSIX.1-2001, POSIX.1-2008, C99.
Das Verhalten von wprintf() und weiterer hängt von der Kategorie LC_TYPE der aktuellen Locale ab.
Falls die Zeichenkette format weite Zeichen enthält, die keine ASCII-Zeichen sind, wird das Programm nur dann richtig arbeiten, wenn der LC_CTYPE der Locale während der Laufzeit der gleiche ist wie der LC_CTYPE während des Kompilierens. Das passiert, weil der Datentyp wchar_t von Plattform und Locale abhängig ist. (Die GNU Libc speichert weite Zeichen als Unicode (ISO-10646), andere Plattformen tun das nicht. Auch die Verwendung von universelle Zeichennamen nach C99 der Form \unnnn löst das Problem nicht.) Daher sollte die Zeichenkette format in internationalisierten Programmen ausschließlich aus weiten-Zeichen-Versionen der ASCII-Zeichen bestehen oder während der Laufzeit konstruiert werden (z.B. durch gettext(3) oder iconv(3) gefolgt von einem mbstowcs(3)).
fprintf(3), fputwc(3), fwide(3), printf(3), snprintf(3)
Die deutsche Übersetzung dieser Handbuchseite wurde von Martin Eberhard Schauer <Martin.E.Schauer@gmx.de> erstellt.
Diese Übersetzung ist Freie Dokumentation; lesen Sie die GNU General Public License Version 3 oder neuer bezüglich der Copyright-Bedingungen. Es wird KEINE HAFTUNG übernommen.
Wenn Sie Fehler in der Übersetzung dieser Handbuchseite finden, schicken Sie bitte eine E-Mail an die Mailingliste der Übersetzer.
5. Februar 2023 | Linux man-pages 6.03 |