Provided by: manpages-de-dev_4.18.1-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-Safe locale │
       │vfwprintf(), vswprintf()                        │                       │                │
       └────────────────────────────────────────────────┴───────────────────────┴────────────────┘

STANDARDS

       POSIX.1-2001, POSIX.1-2008, 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-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 ⟨https://www.gnu.org/licenses/gpl-3.0.html⟩ 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⟩.