Provided by: manpages-de-dev_0.5-4.1ubuntu1_all bug

BEZEICHNUNG

       wprintf,   fwprintf,   swprintf,   vwprintf,   vfwprintf,  vswprintf  -
       Formatierte Ausgabe mit weiten Zeichen

Ü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, ...);

       #include <stdarg.h>

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

BESCHREIBUNG

       Im Englischen werden "weite Zeichen" mit "wide characters"  bezeichnet.
       Im  Gegensatz  zu  herkömmlichen  Zeichen werden sie mit mehreren Bytes
       kodiert, so dass mehr als 256 unterschiedliche  Zeichen  zur  Verfügung
       stehen.

       Die  Gruppe  der  wprintf-Funktionen ist die Variante für weite Zeichen
       der printf-Funktionen.  Sie produzieren eine  formatierte  Ausgabe  mit
       weiten Zeichen.

       Die  Funktionen  wprintf  und vwprintf schreiben ihre Ausgabe als weite
       Zeichen auf  stdout.   Dazu  darf  stdout  nicht  byte-orientiert  sein
       (vergleichen  Sie  mit  der Funktion fwide, um weitere Informationen zu
       erhalten).

       Die Funktionen fwprintf und vfwprintf schreiben ihre Ausgabe als  weite
       Zeichen  auf  stream.   Dazu  darf  stream  nicht  byte-orientiert sein
       (vergleichen Sie mit der Funktion fwide, um  weitere  Informationen  zu
       erhalten).

       Die  Funktionen  swprintf  und  vswprintf schreiben ihre Ausgabe in ein
       Array aus weiten Zeichen.  Es ist Aufgabe des Programmierers, dafür  zu
       sorgen, dass mindestens für maxlen weite Zeichen Platz in wcs vorhanden
       ist.

       Diese  Funktionen  entsprechen  printf,  vprintf,  fprintf,   vfprintf,
       snprintf und vsprintf mit den folgenden Änderungen:

       ·      Die Zeichenkette format besteht aus weiten Zeichen.

       ·      Die Ausgabe besteht auch aus weiten Zeichen und nicht aus Bytes.

       ·      swprintf und vswprintf benutzen ein Argument maxlen, sprintf und
              vsprintf   jedoch   nicht.    snprintf  und  vsnprint  verwenden
              ebenfalls ein solches Argument, doch diese Funktionen  geben  im
              Falle eines Überlaufs nicht -1 zurück. (unter Linux)

       Die Behandlung der Konvertierungszeichen %c und %s ist anders:

       c      Wenn  kein  Modifikator  l  vorhanden ist, wird das Argument int
              durch die Funktion btowc in  weite  Zeichen  umgewandelt,  diese
              werden  geschrieben.   Ist ein Modifikator l vorhanden, wird das
              (weite Zeichen) Argument wint_t geschrieben.

       s      Wenn kein Modifikator l vorhanden ist, wird ein Argument ‘‘const
              char  *’’ erwartet, das ein Zeiger auf ein Array von Zeichen ist
              (Zeiger auf eine Zeichenkette), die eine  Folge  aus  multibyte-
              Zeichen  darstellt,  beginnend  im ursprünglichen "initial shift
              state".   Zeichen  aus  dem  Feld  werden   in   weite   Zeichen
              umgewandelt.  Dabei wird jedesmal die Funktion mbrtowc mit einem
              Umsetzungszustand aufgerufen, beginnend im initialen Zustand vor
              dem  ersten  Byte.   Die  weiten  Zeichen werden bis zum Endcode
              "Null"  (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 weiten Zeichen, und nicht die Anzahl
              der Bytes oder screen positions bezeichnet.

              Das Feld muss eine "Null" als Endbyte beinhalten, es  sei  denn,
              eine  Genauigkeit ist angegeben und diese ist so klein, dass die
              Anzahl der  weiten  Zeichen  größer  ist,  als  die  vorgesehene
              Breite.  --  Wenn  der  Modifikator  I  vorhanden  ist, wird ein
              Argument ‘‘const wchar_t *’’ erwartet, das ein  Zeiger  auf  ein
              Feld  von  weiten  Zeichen  ist.  Weite Zeichen von diesem Array
              werden bis zum  weiten  Null-Zeichen  geschrieben.  (Aber  nicht
              inklusive.)   Wenn eine Genauigkeit angegeben wird, werden nicht
              mehr als die angegebene Anzahl  von  Zeichen  geschrieben.   Das
              Feld  muss  ein  Endzeichen beinhalten, es sei denn, es ist eine
              Genauigkeit angegeben, die kleiner oder gleich  der  Anzahl  der
              weiten Zeichen in dem Feld ist.

RÜCKGABEWERT

       Die  Funktionen geben die Anzahl der geschrieben weiten Zeichen zurück,
       ausschließlich der terminierenden weiten Null, im Fall  der  Funktionen
       swprintf und vswprintf.  Im Fehlerfall wird -1 zurückgegeben.

BEMERKUNGEN

       Das  Verhalten  von  wprintf  hängt  u.a.  von  LC_TYPE  der  aktuellen
       Ländereinstellung ab.

       Falls die Zeichenkette format weiten Zeichen enthält, die keine  ASCII-
       Zeichen  sind,  wird  das  Programm nur dann richtig arbeiten, wenn der
       LC_CTYPE der Ländereinstellung während der Laufzeit  die  gleiche  ist,
       wie  der  LC_CTYPE  während  des  Kompilierens.  Das passiert, weil der
       Datentyp wchar_t plattform- und  länderabhängig  ist.   (Die  GNU  Libc
       speichert  weite  Zeichen  als  Unicode (ISO-10646), andere Plattformen
       haben andere Lösungen.  Auch die  Verwendung  von  ISO  C99  "universal
       character  names"  der  Form  \unnnn  helfen  nicht.)  Daher sollte die
       Zeichenkette format in internationalisierten Programmen  ausschließlich
       aus weiten ASCII-Zeichen bestehen oder während der Laufzeit konstruiert
       werden (z.B. durch gettext oder iconv gefolgt von einem mbstows).

KONFORM ZU

       ISO/ANSI C, UNIX98

SIEHE AUCH

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