wcwidth() — ワイド文字の表示幅の判別

フォーマット

#include <wchar.h>
int wcwidth (const wint_t wc);

言語レベル

XPG4

スレッド・セーフ

はい

ロケール依存

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

ワイド文字関数

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

説明

wcwidth() 関数は、 wc のグラフィック表示がディスプレイで占有する出力位置数を 判別します。各出力ワイド文字は、ディスプレイ上にそれ独自の出力位置数を 占有します。その数は、装置上のその位置とは無関係です。

errno の値は、EINVAL (非出力ワイド文字) に設定される可能性があります。

戻り値

wcwidth() 関数は、以下のいずれかを戻します。
  • wc がヌル・ワイド文字の場合は 0。
  • wc が占有する出力位置数。
  • wc が出力ワイド文字でない場合は -1。

#include <stdio.h>
#include <wchar.h>
 
int   main(void)
{
    wint_t   wc   =   L'A';
 
    printf("%lc   has   a   width   of   %d¥n",   wc,   wcwidth(wc));
    return   0; 
}
 
   /**************************************************************************
    The   output   should   be   similar   to   :
    A   has   a   width   of   1
    **************************************************************************/