putwchar() — ワイド文字の stdout への書き込み

フォーマット

     #include <wchar.h>
     wint_t putwchar(wint_t wc);

言語レベル

ANSI

スレッド・セーフ

はい

ロケール依存

この関数の振る舞いは、現行ロケールの LC_CTYPE カテゴリーの影響を受ける可能性があります。この振る舞いは、LOCALETYPE(*LOCALEUCS2) または LOCALETYPE(*LOCALEUTF) をコンパイル・コマンドで指定した場合も、現行ロケールの LC_UNI_CTYPE カテゴリーによって影響を受ける可能性があります。 この関数は、コンパイル・コマンドに対して LOCALETYPE(*CLD) が指定されている場合には使用できません。詳細については、CCSID およびロケールの理解を参照してください。

統合ファイル・システム・インターフェース

この関数は、コンパイル・コマンドに対して SYSIFCOPT(*NOIFSIO) が指定されている場合には使用できません。

ワイド文字関数

詳細については、ワイド文字を参照してください。

説明

putwchar() 関数は、ワイド文字 wc をマルチバイト文字に変換してから、stdout に書き込みます。 putwchar() 関数への呼び出しは、putwc(wc, stdout) と同等です。

非ワイド文字関数を putwchar() 関数と共に同じストリーム上で使用すると、予期しない振る舞いが生じる結果となります。 putwchar() 関数の呼び出し後、EOF に到達していない限り、ストリームに対する書き込み関数を呼び出す前にバッファーをフラッシュするか、またはストリーム・ポインターの位置を変更します。 ストリームに対する書き込み操作の後、putwchar() 関数を呼び出す前にバッファーをフラッシュするか、ストリーム・ポインターの位置を変更してください。

戻り値

putwchar() 関数は、書き込まれたワイド文字を戻します。 書き込みエラーが発生すると、putwchar() 関数はストリームのエラー標識を設定し、WEOF を戻します。 ワイド文字のマルチバイト文字への変換中にエンコード・エラーが発生すると、putwchar() 関数は errno に EILSEQ を設定し、WEOF を戻します。

putwc() の errno 値について詳しくは、fputc() — 文字の書き込みを参照してください。

この例では、putwchar() 関数を使用して wcs にストリングを書き込みます。
#include <stdio.h>
#include <wchar.h>
#include <errno.h>
#include <stdlib.h>
 
int main(void)
{
   wchar_t *wcs = L"A character string.";
   int     i;
 
   for (i = 0; wcs[i] != L'¥0'; i++) {
      errno = 0;
      if (WEOF == putwchar(wcs[i])) {
         printf("Unable to putwchar() the wide character.¥n");
         printf("wcs[%d] = 0x%lx¥n", i, wcs[i]);
         if (EILSEQ == errno)
            printf("An invalid wide character was encountered.¥n");
         exit(EXIT_FAILURE);
      }
   }
   return 0;
 
   /**************************************************************
      The output should be similar to :
 
      A character string.
   **************************************************************/
}