setlocale関数
関数のプロトタイプます。char *にsetlocale(int型のカテゴリ、CONST文字*ロケール)。
ヘッダファイルにあるのsetlocale 、はsetlocale()関数は、現在のプログラムするために使用することができる領域の設定を(ローカル、地域の設定を設定)は、また、現在のプログラム得るために使用することができる情報を設定する領域を、にsetlocaleの2つのパラメータを必要とします
最初のパラメータカテゴリ:
地理的な設定の範囲を設定するために使用します。地理的な設定は、比較、日付形式の複数の側面の内容は、数の書式、通貨の書式、文字処理が含まれている、というように、現在の地域設定は、コンテンツの唯一の特定の側面に影響を与える可能性があり、それはまた、すべてのコンテンツに影響を与えることができます
だけでなく、カテゴリセットの値、マクロは、<locale.hに>に定義しなければなりません
二番目のパラメータのロケール:
setlocale関数の戻り値:
setlocale()を実行した場合は成功し、その文字列へのポインタを返し、文字列が現在のローカル設定の名前が含まれています。言い換えれば、のsetlocale()は、現在の地域設定の名前を返します。
setlocale()の実行があれば失敗(例えばロケールが配置され、故障領域につながる、名前が存在しない指定されている)、それはNULLポインタを返します
setlocale関数プログラムでない他のパラメータと他の領域ならば、プログラムが実行され、ロケールCが文字コードはC言語のソースコードを記述するために使用される一般的なローカルANSI文字セット符号化のすべての部分で使用するデフォルトロケールに初期化されます最小の文字セット、
現在使用の弾力で地理的な設定を参照して、以下のsetlocale
char * P;
P = はsetlocale(LC_ALL、NULL);
printf(" %sにする\ n "、P);
結果:
もし上記のコンパイラで使用される現在の地域設定を見ることができますから、あなたは広いと出力漢字にしたい場合はCは、ですが、まだデフォルトの地域設定(C)、次のsetlocale試みは、中国のワイド文字出力を解決するために問題があるでしょう問題
wchar_tのSS [ 20である];
CHAR * P;
P = はsetlocale(LC_ALL、NULL);
SS [ 0 ] = _T(' 中' );
SS [ 1。 = _T(] ' テキスト' );
SS [ 2 ] = _T(' \ 0 ' );
wprintf(L " %のLSの\のN- " 、SS);
のprintf(" 地域の設定:%S \ N- "、P)。
結果:
デフォルトのロケールは、すべての地方公共部分ANSI文字セットエンコーディングに使用する文字エンコーディングであるC、に初期化されるので、それが動作して見ることができる以上の結果から「」text「の言葉は正しい出力は、ありませんでしたです書き込むためのC言語ソースコード最小の文字セットのsetlocaleを参照して、以下の領域を次のように簡体字中国語、修正されたコードに:
wchar_tのSS [ 20 ]。
char * P;
P =はsetlocale(LC_ALL、"" );
SS [ 0 ] = _T(' 中' )。
SS [ 1 ] = _T(' 文' );
SS [ 2 ] = _T(' \ 0 ' )。
wprintf(L " %のLS \ n " 、SS)。
printf(" 地域设置:%のSの\ n "、P);
結果:
オペレーティングシステムは、中国の環境であるため、上記のコードはように変更することができる効果が同じです