Provided by: manpages-de-dev_4.27.0-1_all bug

BEZEICHNUNG

       wprintf,  fwprintf, swprintf, vwprintf, vfwprintf, vswprintf - Umwandlung der Ausgabe formatierter weiter
       Zeichen

BIBLIOTHEK

       Standard-C-Bibliothek (libc, -lc)

ÜBERSICHT

       #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);

   Mit Glibc erforderliche Feature-Test-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  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 Zeichenkette format besteht aus weiten Zeichen.

             Die Ausgabe besteht aus weiten Zeichen und nicht aus Bytes.

             swprintf() und vswprintf() verwenden ein Argument  maxlänge,  sprintf(3)  und  vsprintf(3)  jedoch
              nicht.  snprintf(3)  und  vsnprint(3)  verwenden  ebenfalls  das  Argument  maxlänge,  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 weites Zeichen) 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
              enthält,  beginnend im ursprünglichen Schiebezustand. Zeichen aus dem Feld werden in weite Zeichen
              umgewandelt. Für jedes Zeichen  wird  die  Funktion  mbrtowc(3)  aufgerufen;  jedesmal  mit  einem
              Konvertierungszustand,  der bei dem Anfangszustand vor dem ersten Byte beginnt. Die weiten Zeichen
              werden bis zum abschließenden weiten Nullzeichen (L'\0') (aber nicht inklusive) geschrieben.  Wird
              eine  Genauigkeit  angegeben,  so  werden  nicht  mehr  weite  Zeichen  als  die angegebene Anzahl
              geschrieben. Beachten Sie, dass die Genauigkeit die Anzahl der geschriebenen  weiten  Zeichen  und
              nicht die Anzahl der Bytes oder Zeichenpositionen auf dem Bildschirm bezeichnet. Das Feld muss ein
              abschließendes  Nullbyte  (»\0«)  enthalten,  wenn  nicht eine Genauigkeit angegeben wurde, die so
              klein ist, dass die Zahl der umgewandelten weiten Zeichen 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 weiten Zeichen ist. Weite Zeichen aus dem Feld werden bis zu
              (aber nicht einschließlich)  eines  abschließenden  weiten  Nullzeichens  geschrieben.  Wenn  eine
              Genauigkeit angegeben wird, werden nicht mehr als die angegebene Anzahl geschrieben. Das Feld muss
              ein  abschließendes  weites  Nullzeichen enthalten, wenn eine Genauigkeit angegeben wird und diese
              kleiner als oder gleich der Anzahl der weiten Zeichen in dem Feld ist.

RÜCKGABEWERT

       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.

ATTRIBUTE

       Siehe attributes(7) für eine Erläuterung der in diesem Abschnitt verwandten Ausdrücke.
       ┌────────────────────────────────────────────────────────────┬───────────────────────┬──────────────────┐
       │ SchnittstelleAttributWert             │
       ├────────────────────────────────────────────────────────────┼───────────────────────┼──────────────────┤
       │ wprintf(), fwprintf(), swprintf(), vwprintf(),             │ Multithread-Fähigkeit │ MT-Sicher locale │
       │ vfwprintf(), vswprintf()                                   │                       │                  │
       └────────────────────────────────────────────────────────────┴───────────────────────┴──────────────────┘

STANDARDS

       C11, POSIX.1-2008.

GESCHICHTE

       POSIX.1-2001, C99.

ANMERKUNGEN

       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/IEC 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)).

SIEHE AUCH

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

Ü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  die
       Mailingliste der Übersetzer: debian-l10n-german@lists.debian.org.

Linux man-pages 6.9.1                             15. Juni 2024                                       wprintf(3)