2004-11-03 13:51:07 +00:00
|
|
|
.\" 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/
|
intro.1, time.1, accept.2, bind.2, connect.2, execve.2, flock.2, getdents.2, getpriority.2, getuid.2, intro.2, ioctl.2, mincore.2, mknod.2, personality.2, ptrace.2, read.2, recv.2, select_tut.2, send.2, sendfile.2, shmctl.2, sigaction.2, signal.2, stat.2, times.2, truncate.2, umask.2, wait.2, MB_CUR_MAX.3, MB_LEN_MAX.3, argz_add.3, btowc.3, clearenv.3, clock.3, cmsg.3, end.3, endian.3, errno.3, exit.3, fgetwc.3, fgetws.3, fopen.3, fputwc.3, fputws.3, fseek.3, fwide.3, getfsent.3, getgrnam.3, gethostid.3, getipnodebyname.3, getmntent.3, getpwnam.3, getwchar.3, grantpt.3, iconv.3, iconv_close.3, iconv_open.3, insque.3, intro.3, iswalnum.3, iswalpha.3, iswblank.3, iswcntrl.3, iswctype.3, iswdigit.3, iswgraph.3, iswlower.3, iswprint.3, iswpunct.3, iswspace.3, iswupper.3, iswxdigit.3, malloc.3, mblen.3, mbrlen.3, mbrtowc.3, mbsinit.3, mbsnrtowcs.3, mbsrtowcs.3, mbstowcs.3, mbtowc.3, mkstemp.3, mktemp.3, nl_langinfo.3, openpty.3, posix_openpt.3, printf.3, ptsname.3, putwchar.3, qecvt.3, rcmd.3, readdir.3, rexec.3, rpc.3, setnetgrent.3, shm_open.3, sigpause.3, stdin.3, stpcpy.3, strftime.3, strptime.3, syslog.3, towctrans.3, towlower.3, towupper.3, ttyslot.3, ungetwc.3, unlocked_stdio.3, wcpcpy.3, wcpncpy.3, wcrtomb.3, wcscasecmp.3, wcscat.3, wcschr.3, wcscmp.3, wcscpy.3, wcscspn.3, wcsdup.3, wcslen.3, wcsncasecmp.3, wcsncat.3, wcsncmp.3, wcsncpy.3, wcsnlen.3, wcsnrtombs.3, wcspbrk.3, wcsrchr.3, wcsrtombs.3, wcsspn.3, wcsstr.3, wcstok.3, wcstombs.3, wcswidth.3, wctob.3, wctomb.3, wctrans.3, wctype.3, wcwidth.3, wmemchr.3, wmemcmp.3, wmemcpy.3, wmemmove.3, wmemset.3, wprintf.3, console_ioctl.4, pts.4, elf.5, filesystems.5, hosts.5, proc.5, ttytype.5, boot.7, capabilities.7, credentials.7, epoll.7, glob.7, koi8-r.7, path_resolution.7, pty.7, signal.7, suffixes.7, time.7, unicode.7, unix.7, uri.7, utf-8.7: global fix: s/Unix/UNIX/
The man pages were rather inconsistent in the use of "Unix"
versus "UNIX". Let's go with the trademark usage.
Signed-off-by: Michael Kerrisk <mtk.manpages@gmail.com>
2010-10-12 04:45:38 +00:00
|
|
|
.\" OpenGroup's Single UNIX specification http://www.UNIX-systems.org/online.html
|
2004-11-03 13:51:07 +00:00
|
|
|
.\" ISO/IEC 9899:1999
|
|
|
|
.\"
|
2011-09-17 06:49:52 +00:00
|
|
|
.TH WPRINTF 3 2011-09-17 "GNU" "Linux Programmer's Manual"
|
2004-11-03 13:51:07 +00:00
|
|
|
.SH NAME
|
2007-04-12 22:42:49 +00:00
|
|
|
wprintf, fwprintf, swprintf, vwprintf, vfwprintf, vswprintf \- formatted
|
2007-04-24 19:40:35 +00:00
|
|
|
wide-character output conversion
|
2004-11-03 13:51:07 +00:00
|
|
|
.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 ,
|
2007-04-03 15:32:52 +00:00
|
|
|
.BI " const wchar_t *" format ", ...);"
|
2004-11-03 13:51:07 +00:00
|
|
|
.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 ,
|
2007-04-03 15:32:52 +00:00
|
|
|
.BI " const wchar_t *" format ", va_list " args );
|
2004-11-03 13:51:07 +00:00
|
|
|
.fi
|
2007-07-08 12:11:40 +00:00
|
|
|
.sp
|
|
|
|
.in -4n
|
|
|
|
Feature Test Macro Requirements for glibc (see
|
|
|
|
.BR feature_test_macros (7)):
|
|
|
|
.in
|
|
|
|
.sp
|
|
|
|
.ad l
|
2007-12-23 09:00:11 +00:00
|
|
|
All functions shown above:
|
2010-09-18 18:59:11 +00:00
|
|
|
.RS 4
|
2007-07-08 12:11:40 +00:00
|
|
|
.\" .BR wprintf (),
|
|
|
|
.\" .BR fwprintf (),
|
|
|
|
.\" .BR swprintf (),
|
|
|
|
.\" .BR vwprintf (),
|
|
|
|
.\" .BR vfwprintf (),
|
|
|
|
.\" .BR vswprintf ():
|
2010-09-18 19:03:48 +00:00
|
|
|
_XOPEN_SOURCE\ >=\ 500 || _ISOC99_SOURCE ||
|
2011-09-17 06:49:52 +00:00
|
|
|
.br
|
|
|
|
_ISOC95_SOURCE /* Since glibc 2.12 */ ||
|
|
|
|
.br
|
2010-09-18 19:03:48 +00:00
|
|
|
_POSIX_C_SOURCE\ >=\ 200112L;
|
2010-09-18 18:59:11 +00:00
|
|
|
.br
|
|
|
|
or
|
2007-07-08 12:11:40 +00:00
|
|
|
.I cc\ -std=c99
|
2010-09-18 18:59:11 +00:00
|
|
|
.RE
|
|
|
|
.ad
|
2004-11-03 13:51:07 +00:00
|
|
|
.SH DESCRIPTION
|
2007-05-12 09:06:04 +00:00
|
|
|
The
|
|
|
|
.BR wprintf ()
|
|
|
|
family of functions is
|
2007-04-12 22:42:49 +00:00
|
|
|
the wide-character equivalent of the
|
2007-05-12 09:06:04 +00:00
|
|
|
.BR printf (3)
|
|
|
|
family of functions.
|
2007-04-12 22:42:49 +00:00
|
|
|
It performs formatted output of wide
|
2004-11-03 13:51:07 +00:00
|
|
|
characters.
|
|
|
|
.PP
|
2007-05-12 09:06:04 +00:00
|
|
|
The
|
|
|
|
.BR wprintf ()
|
|
|
|
and
|
|
|
|
.BR vwprintf ()
|
|
|
|
functions
|
2007-06-17 14:12:43 +00:00
|
|
|
perform wide-character output to \fIstdout\fP.
|
2007-07-08 14:55:48 +00:00
|
|
|
\fIstdout\fP must not be byte oriented; see
|
2007-05-12 09:06:04 +00:00
|
|
|
.BR fwide (3)
|
|
|
|
for more information.
|
2004-11-03 13:51:07 +00:00
|
|
|
.PP
|
2007-05-12 09:06:04 +00:00
|
|
|
The
|
|
|
|
.BR fwprintf ()
|
|
|
|
and
|
|
|
|
.BR vfwprintf ()
|
|
|
|
functions
|
2007-04-24 19:40:35 +00:00
|
|
|
perform wide-character output to \fIstream\fP.
|
2007-07-08 14:55:48 +00:00
|
|
|
\fIstream\fP must not be byte oriented; see
|
2007-05-12 09:06:04 +00:00
|
|
|
.BR fwide (3)
|
|
|
|
for more information.
|
2004-11-03 13:51:07 +00:00
|
|
|
.PP
|
2007-05-12 09:06:04 +00:00
|
|
|
The
|
|
|
|
.BR swprintf ()
|
|
|
|
and
|
|
|
|
.BR vswprintf ()
|
|
|
|
functions
|
2007-04-24 19:40:35 +00:00
|
|
|
perform wide-character output
|
2004-11-03 13:51:07 +00:00
|
|
|
to an array of wide characters.
|
2007-04-12 22:42:49 +00:00
|
|
|
The programmer must ensure that there is
|
|
|
|
room for at least \fImaxlen\fP wide
|
2004-11-03 13:51:07 +00:00
|
|
|
characters at \fIwcs\fP.
|
|
|
|
.PP
|
2007-04-12 22:42:49 +00:00
|
|
|
These functions are like
|
2007-05-12 09:06:04 +00:00
|
|
|
the
|
|
|
|
.BR printf (3),
|
|
|
|
.BR vprintf (3),
|
|
|
|
.BR fprintf (3),
|
|
|
|
.BR vfprintf (3),
|
|
|
|
.BR sprintf (3),
|
|
|
|
.BR vsprintf (3)
|
2007-04-12 22:42:49 +00:00
|
|
|
functions except for the
|
2004-11-03 13:51:07 +00:00
|
|
|
following differences:
|
|
|
|
.TP
|
|
|
|
.B \(bu
|
2007-04-24 19:40:35 +00:00
|
|
|
The \fIformat\fP string is a wide-character string.
|
2004-11-03 13:51:07 +00:00
|
|
|
.TP
|
|
|
|
.B \(bu
|
|
|
|
The output consists of wide characters, not bytes.
|
|
|
|
.TP
|
|
|
|
.B \(bu
|
2007-05-12 09:06:04 +00:00
|
|
|
.BR swprintf ()
|
|
|
|
and
|
|
|
|
.BR vswprintf ()
|
|
|
|
take a \fImaxlen\fP argument,
|
|
|
|
.BR sprintf (3)
|
|
|
|
and
|
|
|
|
.BR vsprintf (3)
|
|
|
|
do not.
|
|
|
|
.RB ( snprintf (3)
|
|
|
|
and
|
|
|
|
.BR vsnprintf (3)
|
2004-11-03 13:51:07 +00:00
|
|
|
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
|
2007-05-12 00:30:29 +00:00
|
|
|
.BR btowc (3)
|
2004-11-03 13:51:07 +00:00
|
|
|
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
|
2007-06-12 21:19:16 +00:00
|
|
|
.I "const\ char\ *"
|
2004-11-03 13:51:07 +00:00
|
|
|
argument is expected to be a pointer to an array of character type
|
|
|
|
(pointer to a string) containing a multibyte character sequence beginning
|
2007-04-12 22:42:49 +00:00
|
|
|
in the initial shift state.
|
|
|
|
Characters from the array are converted to
|
2004-11-03 13:51:07 +00:00
|
|
|
wide characters (each by a call to the
|
2007-05-12 00:30:29 +00:00
|
|
|
.BR mbrtowc (3)
|
2004-11-03 13:51:07 +00:00
|
|
|
function with a conversion state starting in the initial state before
|
2007-04-12 22:42:49 +00:00
|
|
|
the first byte).
|
|
|
|
The resulting wide characters are written up to
|
|
|
|
(but not including) the terminating null wide character.
|
|
|
|
If a precision is
|
2004-11-03 13:51:07 +00:00
|
|
|
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
|
2007-04-12 22:42:49 +00:00
|
|
|
before the end of the array is reached.
|
|
|
|
If an
|
2004-11-03 13:51:07 +00:00
|
|
|
.B l
|
|
|
|
modifier is present: The
|
2007-06-12 21:19:16 +00:00
|
|
|
.I "const\ wchar_t\ *"
|
2004-11-03 13:51:07 +00:00
|
|
|
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
|
2007-04-12 22:42:49 +00:00
|
|
|
terminating null wide character.
|
|
|
|
If a precision is specified, no more than
|
|
|
|
the number specified are written.
|
|
|
|
The array must contain a terminating null
|
2004-11-03 13:51:07 +00:00
|
|
|
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
|
2007-04-12 22:42:49 +00:00
|
|
|
terminating null wide character in
|
2007-05-12 09:06:04 +00:00
|
|
|
case of the functions
|
|
|
|
.BR swprintf ()
|
|
|
|
and
|
|
|
|
.BR vswprintf ().
|
2007-04-12 22:42:49 +00:00
|
|
|
They return \-1 when an error occurs.
|
2004-11-03 13:51:07 +00:00
|
|
|
.SH "CONFORMING TO"
|
2006-08-03 13:57:30 +00:00
|
|
|
C99.
|
2004-11-03 13:51:07 +00:00
|
|
|
.SH NOTES
|
2007-06-08 09:56:56 +00:00
|
|
|
The behavior of
|
2007-05-12 09:06:04 +00:00
|
|
|
.BR wprintf ()
|
|
|
|
et al. depends
|
2007-06-22 18:25:23 +00:00
|
|
|
on the
|
|
|
|
.B LC_CTYPE
|
|
|
|
category of the
|
2004-11-03 13:51:07 +00:00
|
|
|
current locale.
|
|
|
|
.PP
|
|
|
|
If the \fIformat\fP string contains non-ASCII wide characters, the program
|
2007-06-22 18:25:23 +00:00
|
|
|
will only work correctly if the
|
|
|
|
.B LC_CTYPE
|
|
|
|
category of the current locale at
|
|
|
|
run time is the same as the
|
|
|
|
.B LC_CTYPE
|
|
|
|
category of the current locale at
|
2007-04-12 22:42:49 +00:00
|
|
|
compile time.
|
|
|
|
This is because the
|
2006-02-09 20:24:53 +00:00
|
|
|
.I wchar_t
|
2007-12-26 11:17:23 +00:00
|
|
|
representation is platform- and locale-dependent.
|
2007-07-09 22:01:31 +00:00
|
|
|
(The glibc represents
|
2004-11-03 13:51:07 +00:00
|
|
|
wide characters using their Unicode (ISO-10646) code point, but other
|
2007-04-12 22:42:49 +00:00
|
|
|
platforms don't do this.
|
2006-08-03 13:57:30 +00:00
|
|
|
Also, the use of C99 universal character names
|
2007-04-12 22:42:49 +00:00
|
|
|
of the form \\unnnn does not solve this problem.)
|
|
|
|
Therefore, in
|
2004-11-03 13:51:07 +00:00
|
|
|
internationalized programs, the \fIformat\fP string should consist of ASCII
|
|
|
|
wide characters only, or should be constructed at run time in an
|
2007-06-08 11:56:22 +00:00
|
|
|
internationalized way (e.g., using
|
2007-05-12 00:30:29 +00:00
|
|
|
.BR gettext (3)
|
2004-11-03 13:51:07 +00:00
|
|
|
or
|
2007-05-12 00:30:29 +00:00
|
|
|
.BR iconv (3),
|
2004-11-03 13:51:07 +00:00
|
|
|
followed by
|
2007-05-12 00:30:29 +00:00
|
|
|
.BR mbstowcs (3)).
|
2007-05-16 18:25:50 +00:00
|
|
|
.SH "SEE ALSO"
|
|
|
|
.BR fprintf (3),
|
|
|
|
.BR fputwc (3),
|
|
|
|
.BR fwide (3),
|
|
|
|
.BR printf (3),
|
2007-05-30 04:36:21 +00:00
|
|
|
.BR snprintf (3)
|
2007-06-21 22:55:04 +00:00
|
|
|
.\" .BR wscanf (3)
|