1 .\" Copyright (c) Bruno Haible <haible@clisp.cons.org>
3 .\" This is free documentation; you can redistribute it and/or
4 .\" modify it under the terms of the GNU General Public License as
5 .\" published by the Free Software Foundation; either version 2 of
6 .\" the License, or (at your option) any later version.
8 .\" References consulted:
9 .\" GNU glibc-2 source code and manual
10 .\" Dinkumware C library reference http://www.dinkumware.com/
11 .\" OpenGroup's Single Unix specification http://www.UNIX-systems.org/online.html
14 .\" Translated by Walter Harms <walter.harms@informatik.uni-oldenburg.de>
15 .\" 2002-02-10: Modified heavily by Martin Schulze <joey@infodrom.org>
17 .TH WPRINTF 3 "20. November 1999" "GNU" "Linux Programmer's Manual"
19 wprintf, fwprintf, swprintf, vwprintf, vfwprintf, vswprintf \- Formatierte Ausgabe mit weiten Zeichen
25 .BI "int wprintf(const wchar_t *" format ", ...);"
26 .BI "int fwprintf(FILE *" stream ", const wchar_t *" format ", ...);"
27 .BI "int swprintf(wchar_t *" wcs ", size_t " maxlen ,
28 .BI " const wchar_t *" format ", ...);"
30 .B #include <stdarg.h>
32 .BI "int vwprintf(const wchar_t *" format ", va_list " args );
33 .BI "int vfwprintf(FILE *" stream ", const wchar_t *" format ", va_list " args );
34 .BI "int vswprintf(wchar_t *" wcs ", size_t " maxlen ,
35 .BI " const wchar_t *" format ", va_list " args );
38 Im Englischen werden "weite Zeichen" mit "wide characters" bezeichnet.
39 Im Gegensatz zu herkömmlichen Zeichen werden sie mit mehreren Bytes
40 kodiert, so dass mehr als 256 unterschiedliche Zeichen zur Verfügung
44 .BR wprintf \-Funktionen
45 ist die Variante für weite Zeichen der
46 .BR printf \-Funktionen.
47 Sie produzieren eine formatierte Ausgabe mit weiten Zeichen.
53 schreiben ihre Ausgabe als weite Zeichen auf
57 nicht byte-orientiert sein (vergleichen Sie mit der Funktion
59 um weitere Informationen zu erhalten).
65 schreiben ihre Ausgabe als weite Zeichen auf
69 nicht byte-orientiert sein (vergleichen Sie mit der Funktion
71 um weitere Informationen zu erhalten).
77 schreiben ihre Ausgabe in ein Array aus weiten Zeichen.
78 Es ist Aufgabe des Programmierers, dafür zu sorgen, dass mindestens für
85 Diese Funktionen entsprechen
93 mit den folgenden Änderungen:
98 besteht aus weiten Zeichen.
101 Die Ausgabe besteht auch aus weiten Zeichen und nicht aus Bytes.
117 verwenden ebenfalls ein solches Argument, doch diese Funktionen geben im
118 Falle eines Überlaufs nicht -1 zurück. (unter Linux)
120 Die Behandlung der Konvertierungszeichen
127 Wenn kein Modifikator
129 vorhanden ist, wird das Argument
133 in weite Zeichen umgewandelt, diese werden geschrieben.
136 vorhanden, wird das (weite Zeichen) Argument
141 Wenn kein Modifikator
143 vorhanden ist, wird ein Argument
144 .IR "" `` "const char *" ''
145 erwartet, das ein Zeiger auf ein Array von Zeichen ist (Zeiger auf
146 eine Zeichenkette), die eine Folge aus multibyte-Zeichen darstellt,
147 beginnend im ursprünglichen "initial shift state".
148 Zeichen aus dem Feld werden in weite Zeichen umgewandelt. Dabei wird
149 jedesmal die Funktion
151 mit einem Umsetzungszustand aufgerufen, beginnend im initialen Zustand
152 vor dem ersten Byte. Die weiten Zeichen werden bis zum Endcode
153 "Null" (aber nicht inklusive) geschrieben. Wird eine Genauigkeit
154 angegeben, so werden nicht mehr weite Zeichen als die angegebene
155 Anzahl geschrieben. Beachten Sie, dass die Genauigkeit die Anzahl der
156 .IR "weiten Zeichen" ,
157 und nicht die Anzahl der
160 .I "screen positions"
163 Das Feld muss eine "Null" als Endbyte beinhalten, es sei denn, eine Genauigkeit
164 ist angegeben und diese ist so klein, dass die Anzahl der weiten Zeichen
165 größer ist, als die vorgesehene Breite. --
168 vorhanden ist, wird ein Argument
169 .IR "" `` "const wchar_t *" ''
170 erwartet, das ein Zeiger auf ein Feld von weiten Zeichen ist.
171 Weite Zeichen von diesem Array werden bis zum weiten Null-Zeichen
172 geschrieben. (Aber nicht inklusive.)
173 Wenn eine Genauigkeit angegeben wird, werden nicht mehr als die
174 angegebene Anzahl von Zeichen geschrieben. Das Feld muss ein
175 Endzeichen beinhalten, es sei denn, es
176 ist eine Genauigkeit angegeben, die kleiner oder gleich der Anzahl
177 der weiten Zeichen in dem Feld ist.
179 Die Funktionen geben die Anzahl der geschrieben weiten Zeichen zurück,
180 ausschließlich der terminierenden weiten Null, im Fall der Funktionen
184 Im Fehlerfall wird -1 zurückgegeben.
188 hängt u.a. von LC_TYPE der aktuellen Ländereinstellung ab.
190 Falls die Zeichenkette
192 weiten Zeichen enthält, die keine ASCII-Zeichen sind, wird das
193 Programm nur dann richtig arbeiten, wenn der LC_CTYPE der
194 Ländereinstellung während der Laufzeit die gleiche ist, wie der
195 LC_CTYPE während des Kompilierens. Das passiert, weil der Datentyp
197 plattform- und länderabhängig ist. (Die GNU Libc speichert weite Zeichen
198 als Unicode (ISO-10646), andere Plattformen haben andere Lösungen. Auch die
199 Verwendung von ISO C99 "universal character names" der Form \\unnnn helfen
200 nicht.) Daher sollte die Zeichenkette
202 in internationalisierten Programmen ausschließlich aus weiten
203 ASCII-Zeichen bestehen oder während der Laufzeit konstruiert werden