jammy (3) wprintf.3.gz

Provided by: manpages-de-dev_4.13-4_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
              enthält, beginnend  im  ursprünglichen  Schiebezustand.  Zeichen  aus  dem  Feld  werden  in  wide
              characters  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  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 geschriebenen
              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 kleiner als oder gleich der Anzahl der wchar_t  in  dem  Feld
              ist.

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.10  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
       ⟨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⟩.