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() — 文字の書き込みを参照してください。
例
#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.
**************************************************************/
}