sourCEntral - mobile manpages

pdf

WPRINTF

BEZEICHNUNG

wprintf, fwprintf, swprintf, vwprintf, vfwprintf, vswprintf − formatierte Ausgabe mit wide characters (wchar_t)

ÜBERSICHT

#include <stdio.h>
#include <wchar.h>

int wprintf(const wchar_t *format, ...);
int fwprintf(FILE *
stream, const wchar_t *format, ...);
int swprintf(wchar_t *
wcs, size_t maxlen,
const wchar_t *
format, ...);

int vwprintf(const wchar_t *format, va_list args);
int vfwprintf(FILE *
stream, const wchar_t *format, va_list args);
int vswprintf(wchar_t *
wcs, size_t maxlen,
const wchar_t *
format, va_list args);

Mit Glibc erforderliche Makros (siehe feature_test_macros(7)):

Alle oben aufgeführten Funktionen:

_XOPEN_SOURCE >= 500 || _ISOC99_SOURCE ||
_ISOC95_SOURCE /* seit Glibc 2.12 */ ||
_POSIX_C_SOURCE >= 200112L;
oder cc −std=c99

BESCHREIBUNG

Die wprintf()−Funktionsfamilie ist die Variante der printf()−Funktionsfamilie für »wide characters«. Sie erzeugen eine formatierte Ausgabe von wide characters. (Bei wide characters wird jedes Zeichen in einem wchar_t gespeichert und nimmt daher mehr als nur ein Byte ein.)

Die Funktionen wprintf() und vwprintf() geben wide characters auf stdout aus. Dazu darf stdout nicht byteorientiert sein (siehe die Funktion fwide(3) für weitere Informationen).

Die Funktionen fwprintf() und vfwprintf() geben wide characters auf stream aus. Dazu darf stream 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 wcs mindestens für maxlen 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 Zeichenkette format besteht aus wide characters.

Die Ausgabe besteht aus wide characters und nicht aus Bytes.

swprintf() und vswprintf() verwenden ein Argument maxlen, sprintf(3) und vsprintf(3) jedoch nicht. snprintf(3) und vsnprint(3) verwenden ebenfalls das Argument maxlen, doch diese Funktionen geben unter Linux im Falle eines Pufferüberlaufs (buffer overflow) nicht −1 zurück.

Die Behandlung der Konvertierungszeichen c und s unterscheidet sich:

c

Wenn kein l−Modifikator vorhanden ist, wird das int−Argument durch die Funktion btowc(3) in ein wchar_t umgewandelt und dieses wird geschrieben. Ist ein I−Modifikator vorhanden, wird das Argument wint_t (ein wide character) geschrieben.

s

If no l modifier is present: The const char * argument is expected to be a pointer to an array of character type (pointer to a string) containing a multibyte character sequence beginning in the initial shift state. Characters from the array are converted to wide characters (each by a call to the mbrtowc(3) function with a conversion state starting in the initial state before the first byte). The resulting wide characters are written up to (but not including) the terminating null wide character (L'\0'). If a precision is specified, no more wide characters than the number specified are written. Note that the precision determines the number of wide characters written, not the number of bytes or screen positions. The array must contain a terminating null byte ('\0'), unless a precision is given and it is so small that the number of converted wide characters reaches it before the end of the array is reached. If an l modifier is present: The const wchar_t * argument is expected to be a pointer to an array of wide characters. Wide characters from the array are written up to (but not including) a terminating null wide character. If a precision is specified, no more than the number specified are written. The array must contain a terminating null wide character, unless a precision is given and it is smaller than or equal to the number of wide characters in the array.

RÜCKGABEWERT

Die Funktionen geben die Anzahl der geschriebenen wide characters zurück, ausschließlich des abschließenden wchar_t »Null« im Fall der Funktionen swprintf() und vswprintf(). Im Fehlerfall wird −1 zurückgegeben.

KONFORM ZU

C99.

ANMERKUNGEN

Das Verhalten von wprintf() hängt u.a. von der Kategorie LC_TYPE der aktuellen Locale ab.

Falls die Zeichenkette format wide characters 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 wide characters als Unicode (ISO−10646), andere Plattformen tun das nicht. Auch die Verwendung von »universal character names« nach ISO C99 der Form \unnnn löst das Problem nicht.) Daher sollte die Zeichenkette format in internationalisierten Programmen ausschließlich aus »wide character«−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)).

SIEHE AUCH

fprintf(3), fputwc(3), fwide(3), printf(3), snprintf(3)

KOLOPHON

Diese Seite ist Teil der Veröffentlichung 3.52 des Projekts Linux−man−pages. Eine Beschreibung des Projekts und Informationen, wie Fehler gemeldet werden können, finden sich unter http://www.kernel.org/doc/man−pages/.

ÜBERSETZUNG

Die deutsche Übersetzung dieser Handbuchseite wurde von Martin Eberhard Schauer <Martin DOT E DOT Schauer AT gmx DOT 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 <debian-l10n-german AT lists DOT debian DOT org>.

pdf