wctob() — ワイド文字からバイトへの変換

フォーマット

#include <stdio.h>
#include <wchar.h>
int wctob(wint_t wc);

言語レベル

ANSI

スレッド・セーフ

はい

ロケール依存

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

ワイド文字関数

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

説明

wctob() 関数は、マルチバイト文字の長さが初期シフト状態時に 1 バイトである、拡張文字セットのメンバーに wc が対応しているかどうかを 判別します。

戻り値

c が 1 バイトの長さのマルチバイト文字に対応している場合、 wctob() 関数は単一バイト表示を戻します。 そうでない場合には、EOF を戻します。

変換エラーが発生した場合、errnoECONVERT に設定される可能性があります。

この例では wctob() 関数を使用し、ワイド文字 A が有効な 1 バイト文字で あるかどうかをテストします。
#include <stdio.h>
#include <wchar.h>
 
int main(void)
{
   wint_t wc = L'A';
 
   if (wctob(wc) == wc)
      printf("%lc is a valid single byte character¥n", wc);
   else
      printf("%lc is not a valid single byte character¥n", wc);
   return 0;
}
 
   /************************************************************
      The output should be similar to:
 
      A is a valid single byte character
   ************************************************************/