Next: , Previous: fputs, Up: Stdio


4.22 fputwc, putwc, fputwc_unlocked, putwc_unlocked—write a wide character on a stream or file

Synopsis

     #include <stdio.h>
     #include <wchar.h>
     wint_t fputwc(wchar_t wc, FILE *fp);
     
     #define _GNU_SOURCE
     #include <stdio.h>
     #include <wchar.h>
     wint_t fputwc_unlocked(wchar_t wc, FILE *fp);
     
     #include <stdio.h>
     #include <wchar.h>
     wint_t _fputwc_r(struct _reent *ptr, wchar_t wc, FILE *fp);
     
     #include <stdio.h>
     #include <wchar.h>
     wint_t _fputwc_unlocked_r(struct _reent *ptr, wchar_t wc, FILE *fp);
     
     #include <stdio.h>
     #include <wchar.h>
     wint_t putwc(wchar_t wc, FILE *fp);
     
     #define _GNU_SOURCE
     #include <stdio.h>
     #include <wchar.h>
     wint_t putwc_unlocked(wchar_t wc, FILE *fp);
     
     #include <stdio.h>
     #include <wchar.h>
     wint_t _putwc_r(struct _reent *ptr, wchar_t wc, FILE *fp);
     
     #include <stdio.h>
     #include <wchar.h>
     wint_t _putwc_unlocked_r(struct _reent *ptr, wchar_t wc, FILE *fp);
     

Description
fputwc writes the wide character argument wc to the file or stream identified by fp.

If the file was opened with append mode (or if the stream cannot support positioning), then the new wide character goes at the end of the file or stream. Otherwise, the new wide character is written at the current value of the position indicator, and the position indicator oadvances by one.

fputwc_unlocked is a non-thread-safe version of fputwc. fputwc_unlocked may only safely be used within a scope protected by flockfile() (or ftrylockfile()) and funlockfile(). This function may safely be used in a multi-threaded program if and only if they are called while the invoking thread owns the (FILE *) object, as is the case after a successful call to the flockfile() or ftrylockfile() functions. If threads are disabled, then fputwc_unlocked is equivalent to fputwc.

The putwc and putwc_unlocked functions or macros function identically to fputwc and fputwc_unlocked. They may be implemented as a macro, and may evaluate its argument more than once. There is no reason ever to use them.

The _fputwc_r, _putwc_r, _fputwc_unlocked_r, and _putwc_unlocked_r functions are simply reentrant versions of the above that take an additional reentrant structure argument: ptr.


Returns
If successful, fputwc and putwc return their argument wc. If an error intervenes, the result is EOF. You can use `ferror(fp)' to query for errors.

Portability
fputwc and putwc are required by C99 and POSIX.1-2001.

fputwc_unlocked and putwc_unlocked are GNU extensions.