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.
**************************************************************/
}