fputwc -- Write Wide Character

Format

#include <wchar.h>
wint_t fputwc(wint_t wc, FILE *stream);

Language Level: ANSI 93, XPG4
fputwc converts the wide character wc to a multibyte character and writes it to the output stream pointed to by stream at the current position. It also advances the file position indicator appropriately. If the file cannot support positioning requests, or if the stream was opened with append mode, the character is appended to the stream.

The behavior of fputwc is affected by the LC_CTYPE category of the current locale. If you change the category between subsequent operations on the same stream, undefined results can occur. Using non-wide-character functions with fputwc on the same stream results in undefined behavior.

After calling fputwc, flush the buffer or reposition the stream pointer before calling a read function for the stream. After reading from the stream, flush the buffer or reposition the stream pointer before calling fputwc, unless EOF has been reached.

Return Value
fputwc returns the wide character written. If a write error occurs, the error indicator for the stream is set and fputwc returns WEOF. If an encoding error occurs during conversion from wide character to a multibyte character, fputwc sets errno to EILSEQ and returns WEOF.

Example
This example opens a file and uses fputwc to write wide characters to the file.

#include <stdio.h>
#include <stdlib.h>
#include <wchar.h>
#include <errno.h>
int main(void)
{
   FILE    *stream;
   wchar_t *wcs = L"A character string.";
   int     i;
   if (NULL == (stream = fopen("fputwc.out", "w"))) {
      printf("Unable to open: \"fputwc.out\".\n");
      exit(1);
   }
   for (i = 0; wcs[i] != L'\0'; i++) {
      errno = 0;
      if (WEOF == fputwc(wcs[i], stream)) {
         printf("Unable to fputwc() the wide character.\n"
                "wcs[%d] = 0x%lx\n", i, wcs[i]);
         if (EILSEQ == errno)
            printf("An invalid wide character was encountered.\n");
         exit(1);
      }
   }
   fclose(stream);
   return 0;
   /***************************************************************
      The output file fputwc.out should contain:
      A character string.
   ***************************************************************/
}



fgetwc -- Read Wide Character from Stream
fputc -- Write Character
_fputchar -- Write Character
fputws -- Write Wide-Character String
_putch -- Write Character to Screen
<stdio.h>
<wchar.h>