focal (3) wprintf.3.gz

Provided by: manpages-de-dev_2.16-1_all bug

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 ||
           _POSIX_C_SOURCE >= 200112L

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      Wenn kein Modifikator l vorhanden ist: Vom const char *-Argument wird erwartet, dass es ein Zeiger
              auf  ein Feld von Zeichen (Zeiger auf eine Zeichenkette) ist, die eine Folge aus Multibyte-Zeichen
              darstellt, beginnend im ursprünglichen »initial shift state«. Zeichen aus dem Feld werden in  wide
              characters  umgewandelt.  Für  jedes Zeichen wird die Funktion mbrtowc(3) aufgerufen; jedesmal mit
              dem anfänglichen Konvertierungszustand vor dem ersten Byte. Die wide  characters  werden  bis  zum
              abschließenden  wchar_t-Zeichen  »Null«  (L'\0')  (aber  nicht  inklusive)  geschrieben. Wird eine
              Genauigkeit angegeben, so werden nicht mehr wide characters als die angegebene Anzahl geschrieben.
              Beachten  Sie,  dass die Genauigkeit die Anzahl der wide characters und nicht die Anzahl der Bytes
              oder Zeichenpositionen auf dem Bildschirm bezeichnet. Das Feld muss ein  abschließendes  Null-Byte
              ('\0') enthalten, wenn nicht eine Genauigkeit angegeben wurde, die so klein ist, dass die Zahl der
              umgewandelten wide characters erreicht wird, bevor das Ende des  Feldes  erreicht  ist.  Wenn  ein
              l-Modifikator  vorhanden  ist:  Vom const wchar_t *-Argument wird erwartet, dass es ein Zeiger auf
              ein Feld von wchar_t ist. Wide characters aus dem Feld werden bis zu (aber  nicht  einschließlich)
              eines abschließenden wchar_t »Null«geschrieben. Wenn eine Genauigkeit angegeben wird, werden nicht
              mehr als die angegebene Anzahl geschrieben.  Das  Feld  muss  ein  abschließendes  wchar_t  »Null«
              enthalten,  wenn  eine Genauigkeit angegeben wird und diese ist kleiner als oder gleich der Anzahl
              der wchar_t in dem Feld.

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.

ATTRIBUTE

       Siehe attributes(7) für eine Erläuterung der in diesem Abschnitt verwandten Ausdrücke.

       ┌─────────────────────────┬───────────────────────┬────────────────┐
       │SchnittstelleAttributWert           │
       ├─────────────────────────┼───────────────────────┼────────────────┤
       │wprintf(), fwprintf(),   │ Multithread-Fähigkeit │ MT-Safe locale │
       │swprintf(), vwprintf(),  │                       │                │
       │vfwprintf(), vswprintf() │                       │                │
       └─────────────────────────┴───────────────────────┴────────────────┘

KONFORM ZU

       POSIX.1-2001, POSIX.1-2008, 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  5.03  des Projekts Linux-man-pages. Eine Beschreibung des
       Projekts, Informationen, wie Fehler gemeldet werden können sowie die aktuelle Version dieser Seite finden
       sich unter https://www.kernel.org/doc/man-pages/.

ÜBERSETZUNG

       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
       <debian-l10n-german@lists.debian.org>.