oracular (3) wprintf.3.gz

Provided by: manpages-de-dev_4.23.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(), vfwprintf(),  │ Multithread-Fähigkeit │ MT-Sicher locale │
       │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
       ⟨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⟩.