summaryrefslogtreecommitdiffstats
path: root/man3/wprintf.3
diff options
context:
space:
mode:
Diffstat (limited to 'man3/wprintf.3')
-rw-r--r--man3/wprintf.3149
1 files changed, 149 insertions, 0 deletions
diff --git a/man3/wprintf.3 b/man3/wprintf.3
new file mode 100644
index 000000000..c98a912dd
--- /dev/null
+++ b/man3/wprintf.3
@@ -0,0 +1,149 @@
+.\" 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
+.\"
+.TH WPRINTF 3 1999-11-20 "GNU" "Linux Programmer's Manual"
+.SH NAME
+wprintf, fwprintf, swprintf, vwprintf, vfwprintf, vswprintf \- formatted wide character output conversion
+.SH SYNOPSIS
+.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 DESCRIPTION
+The \fBwprintf\fP family of functions is the wide-character equivalent of the
+\fBprintf\fP family of functions. It performs formatted output of wide
+characters.
+.PP
+The \fBwprintf\fP and \fBvwprintf\fP functions perform wide character output
+to \fBstdout\fP. \fBstdout\fP must not be byte oriented; see function
+\fBfwide\fP for more information.
+.PP
+The \fBfwprintf\fP and \fBvfwprintf\fP functions perform wide character output
+to \fIstream\fP. \fIstream\fP must not be byte oriented; see function
+\fBfwide\fP for more information.
+.PP
+The \fBswprintf\fP and \fBvswprintf\fP functions perform wide character output
+to an array of wide characters.
+The programmer must ensure that there is room for at least \fImaxlen\fP wide
+characters at \fIwcs\fP.
+.PP
+These functions are like the \fBprintf\fP, \fBvprintf\fP, \fBfprintf\fP,
+\fBvfprintf\fP, \fBsprintf\fP, \fBvsprintf\fP functions except for the
+following differences:
+.TP
+.B \(bu
+The \fIformat\fP string is a wide character string.
+.TP
+.B \(bu
+The output consists of wide characters, not bytes.
+.TP
+.B \(bu
+\fBswprintf\fP and \fBvswprintf\fP take a \fImaxlen\fP argument,
+\fBsprintf\fP and \fBvsprintf\fP do not. (\fBsnprintf\fP and \fBvsnprintf\fP
+take a \fImaxlen\fP argument, but these functions do not return \-1 upon
+buffer overflow on Linux.)
+.PP
+The treatment of the conversion characters \fBc\fP and \fBs\fP is different:
+.TP
+.B c
+If no
+.B l
+modifier is present, the
+.I int
+argument is converted to a wide character by a call to the
+.B btowc
+function, and the resulting wide character is written.
+If an
+.B l
+modifier is present, the
+.I wint_t
+(wide character) argument is written.
+.TP
+.B s
+If no
+.B l
+modifier is present: The
+.IR "" `` "const char *" ''
+argument is expected to be a pointer to an array of character type
+(pointer to a string) containing a multibyte character sequence beginning
+in the initial shift state. Characters from the array are converted to
+wide characters (each by a call to the
+.B mbrtowc
+function with a conversion state starting in the initial state before
+the first byte). The resulting wide characters are written up to
+(but not including) the terminating null wide character. If a precision is
+specified, no more wide characters than the number specified are written.
+Note that the precision determines the number of
+.I wide characters
+written, not the number of
+.I bytes
+or
+.IR "screen positions" .
+The array must contain a terminating null byte, unless a precision is given
+and it is so small that the number of converted wide characters reaches it
+before the end of the array is reached. -- If an
+.B l
+modifier is present: The
+.IR "" `` "const wchar_t *" ''
+argument is expected to be a pointer to an array of wide characters.
+Wide characters from the array are written up to (but not including) a
+terminating null wide character. If a precision is specified, no more than
+the number specified are written. The array must contain a terminating null
+wide character, unless a precision is given and it is smaller than or equal
+to the number of wide characters in the array.
+.SH "RETURN VALUE"
+The functions return the number of wide characters written, excluding the
+terminating null wide character in case of the functions \fBswprintf\fP and
+\fBvswprintf\fP. They return \-1 when an error occurs.
+.SH "CONFORMING TO"
+ISO/ANSI C, UNIX98
+.SH "SEE ALSO"
+.BR fprintf (3),
+.BR fputwc (3),
+.BR fwide (3),
+.BR printf (3),
+.BR snprintf (3),
+.BR wscanf (3)
+.SH NOTES
+The behaviour of \fBwprintf\fP et al. depends on the LC_CTYPE category of the
+current locale.
+.PP
+If the \fIformat\fP string contains non-ASCII wide characters, the program
+will only work correctly if the LC_CTYPE category of the current locale at
+run time is the same as the LC_CTYPE category of the current locale at
+compile time. This is because the
+.B wchar_t
+representation is platform and locale dependent. (The GNU libc represents
+wide characters using their Unicode (ISO-10646) code point, but other
+platforms don't do this. Also, the use of ISO C99 universal character names
+of the form \\unnnn does not solve this problem.) Therefore, in
+internationalized programs, the \fIformat\fP string should consist of ASCII
+wide characters only, or should be constructed at run time in an
+internationalized way (e.g. using
+.B gettext
+or
+.BR iconv ,
+followed by
+.BR mbstowcs ).