getwchar() — stdin からワイド文字を取得する
形式
#include <wchar.h>
wint_t getwchar(void);言語レベル
ANSI
スレッド・セーフ
はい
ロケール依存
この関数の振る舞いは、現行ロケールの LC_CTYPE カテゴリーの影響を受ける可能性があります。 また、この振る舞いは、LOCALETYPE(*LOCALEUCS2) または LOCALETYPE(*LOCALEUTF) がコンパイル・コマンドに対して指定されている場合は、現行ロケールの LC_UNI_CTYPE カテゴリーにも影響を受ける可能性があります。 この関数は、コンパイル・コマンドに対して LOCALETYPE(*CLD) が指定されている場合には使用できません。 詳しくは、 CCSID とロケールについてを参照してください。
統合ファイル・システム・インターフェース
この関数は、コンパイル・コマンドに対して SYSIFCOPT(*NOIFSIO) が指定されている場合には使用できません。
ワイド文字関数
詳しくは、 ワイド文字 を参照してください。
説明
getwchar() 関数は、stdin から次のマルチバイト文字を読み取り、それをワイド文字に変換し、 stdinの関連ファイル位置標識を進めます。 getwchar() 関数の呼び出しは、 getwc(stdin)の呼び出しと同等です。
同じストリームに対する後続の読み取り操作間で現行ロケールが変更された場合は、未定義の結果が発生することがあります。 stdin 上の getwchar() 関数で非ワイド文字関数を使用すると、未定義の動作になります。
戻り値
getwchar() 関数は、 stdin または WEOF から次のワイド文字を戻します。 getwchar() 関数は、EOF を検出すると、ストリームの EOF 標識を設定し、WEOF を戻します。 読み取りエラーが発生すると、ストリームのエラー標識が設定され、 getwchar() 関数は WEOF を戻します。 マルチバイト文字からワイド文字への変換中にエンコード・エラーが発生した場合、 getwchar() 関数は errno に EILSEQ を設定し、WEOF を戻します。
ferror() または feof() 関数を使用して、エラーまたは EOF 条件が発生したかどうかを判別します。 データの最後のバイトを超えて読み取ろうとしたときのみ、EOF に達します。 データの最後のバイトまで (最後のバイトを含む) 読み取っても、EOF 標識はオンになりません。
getwchar()の errno 値については、 fgetwc ()-ストリームからのワイド文字の読み取りを参照してください。
例
getwchar() を使用してキーボードからワイド文字を読み取り、ワイド文字を印刷します。#include <errno.h>
#include <stdio.h>
#include <stdlib.h>
#include <wchar.h>
int main(void)
{
wint_t wc;
errno = 0;
while (WEOF != (wc = getwchar()))
printf("wc = %lc\n", wc);
if (EILSEQ == errno) {
printf("An invalid wide character was encountered.\n");
exit(1);
}
return 0;
/***************************************************************
Assuming you enter: abcde
The output should be:
wc = a
wc = b
wc = c
wc = d
wc = e
***************************************************************/
}