@node fputc
@subsection @code{fputc}
@findex fputc

POSIX specification:@* @url{https://pubs.opengroup.org/onlinepubs/9799919799/functions/fputc.html}

Gnulib module: stdio-h, nonblocking, sigpipe
@mindex stdio-h
@mindex nonblocking
@mindex sigpipe

Portability problems fixed by Gnulib module @code{stdio-h}, together with module @code{nonblocking}:
@itemize
@item
When writing to a non-blocking pipe whose buffer is full, this function fails
with @code{errno} being set to @code{ENOSPC} instead of @code{EAGAIN} on some
platforms:
mingw, MSVC 14.
@end itemize

Portability problems fixed by Gnulib module @code{stdio-h}, together with module @code{sigpipe}:
@itemize
@item
When writing to a pipe with no readers, this function fails, instead of
obeying the current @code{SIGPIPE} handler, on some platforms:
mingw, MSVC 14.
@end itemize

Portability problems not fixed by Gnulib:
@itemize
@item
On Windows platforms (excluding Cygwin), this function does not set @code{errno}
upon failure.
@item
This function fails and produces garbled output
when invoked twice, for outputting a non-ASCII character in double-byte encoding,
corresponding to the locale, on some platforms:
mingw in combination with msvcrt,
when the output goes to a Windows console.
@item
On some platforms, this function does not set @code{errno} or the
stream error indicator on attempts to write to a read-only stream:
Cygwin 1.7.9.
@item
This function crashes if the stream's file descriptor has already been
closed, if @code{MSVC_INVALID_PARAMETER_HANDLING} is
@code{HAIRY_LIBRARY_HANDLING} or @code{SANE_LIBRARY_HANDLING},
on some platforms:
MSVC 14.
@end itemize
