File: wprintf.3

package info (click to toggle)
manpages-de 0.7-1
  • links: PTS
  • area: main
  • in suites: squeeze
  • size: 3,188 kB
  • ctags: 9
  • sloc: makefile: 83; perl: 61
file content (218 lines) | stat: -rw-r--r-- 6,319 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
.\" Copyright (c) Bruno Haible <haible@clisp.cons.org>
.\"
.\" This is free documentation; you can redistribute it and/or
.\" modify it under the terms of the GNU General Public License as
.\" published by the Free Software Foundation; either version 2 of
.\" the License, or (at your option) any later version.
.\"
.\" References consulted:
.\"   GNU glibc-2 source code and manual
.\"   Dinkumware C library reference http://www.dinkumware.com/
.\"   OpenGroup's Single Unix specification http://www.UNIX-systems.org/online.html
.\"   ISO/IEC 9899:1999
.\"
.\" Translated by Walter Harms <walter.harms@informatik.uni-oldenburg.de>
.\" 2002-02-10: Modified heavily by Martin Schulze <joey@infodrom.org>
.\"
.TH WPRINTF 3  "20. November 1999" "GNU" "Linux Programmer's Manual"
.SH BEZEICHNUNG
wprintf, fwprintf, swprintf, vwprintf, vfwprintf, vswprintf \- Formatierte Ausgabe mit weiten Zeichen
.SH ÜBERSICHT
.nf
.B #include <stdio.h>
.B #include <wchar.h>
.sp
.BI "int wprintf(const wchar_t *" format ", ...);"
.BI "int fwprintf(FILE *" stream ", const wchar_t *" format ", ...);"
.BI "int swprintf(wchar_t *" wcs ", size_t " maxlen ,
.BI "              const wchar_t *" format ", ...);"
.sp
.B #include <stdarg.h>
.sp
.BI "int vwprintf(const wchar_t *" format ", va_list " args );
.BI "int vfwprintf(FILE *" stream ", const wchar_t *" format ", va_list " args );
.BI "int vswprintf(wchar_t *" wcs ", size_t " maxlen ,
.BI "               const wchar_t *" format ", va_list " args );
.fi
.SH 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.
.PP
Die Gruppe der 
.BR wprintf \-Funktionen
ist die Variante für weite Zeichen der
.BR printf \-Funktionen.
Sie produzieren eine formatierte Ausgabe mit weiten Zeichen.
.PP
Die Funktionen
.B wprintf 
und
.B vwprintf
schreiben ihre Ausgabe als weite Zeichen auf
.IR stdout .
Dazu darf
.I stdout
nicht byte-orientiert sein (vergleichen Sie mit der Funktion
.BR fwide ,
um weitere Informationen zu erhalten).
.PP
Die Funktionen
.B fwprintf 
und
.B vfwprintf
schreiben ihre Ausgabe als weite Zeichen auf
.IR stream .
Dazu darf
.I stream
nicht byte-orientiert sein (vergleichen Sie mit der Funktion
.BR fwide ,
um weitere Informationen zu erhalten).
.PP
Die Funktionen
.B swprintf 
und
.B vswprintf
schreiben ihre Ausgabe in ein Array aus weiten Zeichen.
Es ist Aufgabe des Programmierers, dafür zu sorgen, dass mindestens für
.I maxlen
weite Zeichen Platz
in
.I wcs
vorhanden ist.
.PP
Diese Funktionen entsprechen
.BR printf ,
.BR vprintf ,
.BR fprintf ,
.BR vfprintf ,
.B snprintf
und
.B vsprintf
mit den folgenden Änderungen:
.TP
.B \(bu
Die Zeichenkette
.I format
besteht aus weiten Zeichen.
.TP
.B \(bu
Die Ausgabe besteht auch aus weiten Zeichen und nicht aus Bytes.
.TP
.B \(bu
.B swprintf 
und
.B vswprintf
benutzen ein
Argument
.IR maxlen ,
.B sprintf 
und
.B vsprintf
jedoch nicht.
.B snprintf
und
.B vsnprint
verwenden ebenfalls ein solches Argument, doch diese Funktionen geben im
Falle eines Überlaufs nicht -1 zurück. (unter Linux)
.PP
Die Behandlung der Konvertierungszeichen
.B %c
und
.B %s
ist anders:
.TP
.B c
Wenn kein Modifikator
.B l
vorhanden ist, wird das Argument
.I int
durch die Funktion
.B btowc
in weite Zeichen umgewandelt, diese werden geschrieben. 
Ist ein Modifikator
.B l
vorhanden, wird das (weite Zeichen) Argument
.I wint_t
geschrieben.
.TP
.B s
Wenn kein Modifikator
.B l
vorhanden ist, wird ein Argument
.IR "" `` "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
.B 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
.IR "weiten Zeichen" ,
und nicht die Anzahl der 
.I Bytes
oder
.I "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
.B I
vorhanden ist, wird ein Argument
.IR "" `` "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.
.SH "RÜCKGABEWERT"
Die Funktionen geben die Anzahl der geschrieben weiten Zeichen zurück,
ausschließlich der terminierenden weiten Null, im Fall der Funktionen
.B swprintf
und
.BR vswprintf .
Im Fehlerfall wird -1 zurückgegeben.
.SH BEMERKUNGEN
Das Verhalten von
.B wprintf 
hängt u.a. von LC_TYPE der aktuellen Ländereinstellung ab.
.PP
Falls die Zeichenkette
.I 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
.B 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
.I format
in internationalisierten Programmen ausschließlich aus weiten
ASCII-Zeichen bestehen oder während der Laufzeit konstruiert werden
(z.B. durch
.B gettext
oder
.B iconv
gefolgt von einem
.BR mbstows ).
.SH "KONFORM ZU"
ISO/ANSI C, UNIX98
.SH "SIEHE AUCH"
.BR printf (3),
.BR fprintf (3),
.BR snprintf (3),
.BR fputwc (3),
.BR fwide (3),
.BR wscanf (3).