.\" Copyright (c) Bruno Haible <haible@clisp.cons.org>
.\"
.\" %%%LICENSE_START(GPLv2+_DOC_ONEPARA)
.\" 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.
.\" %%%LICENSE_END
.\"
.\" 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 PUTWCHAR 3  2021-03-22 "GNU" "Linux Programmer's Manual"
.SH NAME
putwchar \- write a wide character to standard output
.SH SYNOPSIS
.nf
.B #include <wchar.h>
.PP
.BI "wint_t putwchar(wchar_t " wc );
.fi
.SH DESCRIPTION
The
.BR putwchar ()
function is the wide-character equivalent of the
.BR putchar (3)
function.
It writes the wide character
.I wc
to
.IR stdout .
If
.I ferror(stdout)
becomes true, it returns
.BR WEOF .
If a wide character
conversion error occurs, it sets
.IR errno
to
.B EILSEQ
and returns
.BR WEOF .
Otherwise, it returns
.IR wc .
.PP
For a nonlocking counterpart, see
.BR unlocked_stdio (3).
.SH RETURN VALUE
The
.BR putwchar ()
function returns
.I wc
if no error occurred, or
.B WEOF
to indicate an error.
.SH ATTRIBUTES
For an explanation of the terms used in this section, see
.BR attributes (7).
.ad l
.nh
.TS
allbox;
lbx lb lb
l l l.
Interface	Attribute	Value
T{
.BR putwchar ()
T}	Thread safety	MT-Safe
.TE
.hy
.ad
.sp 1
.SH CONFORMING TO
POSIX.1-2001, POSIX.1-2008, C99.
.SH NOTES
The behavior of
.BR putwchar ()
depends on the
.B LC_CTYPE
category of the
current locale.
.PP
It is reasonable to expect that
.BR putwchar ()
will actually write
the multibyte sequence corresponding to the wide character
.IR wc .
.SH SEE ALSO
.BR fputwc (3),
.BR unlocked_stdio (3)
