localeconv | Programming Place Plus C言語編 標準ライブラリのリファレンス

トップページC言語編標準ライブラリのリファレンス(名前順)

トップページC言語編標準ライブラリのリファレンス(ヘッダ別)


localeconv関数

概要

数値や通貨の書式化に関する情報を取得する。

ヘッダ

locale.h

形式

struct lconv* localeconv(void);

引数

なし

戻り値

現在のロケールにおける数値や通貨の書式化に関する情報を保持した lconv構造体へのポインタ。

詳細

注意

返されたポインタが指す lconv構造体のメンバは書き換えてはならない。また、次回の localeconv関数の呼び出しによって、メンバの値は書き換えられる可能性がある。

使用例

#include <stdio.h>
#include <locale.h>

static void print_real_num(int integer, int fraction, int fract_part);

int main(void)
{
    puts(setlocale(LC_NUMERIC, ""));
    print_real_num(10, 25, 3);

#if defined(_MSC_VER)
    puts(setlocale(LC_NUMERIC, "spanish"));
#elif defined(__clang__)
    puts(setlocale(LC_NUMERIC, "es_ES"));
#endif
    print_real_num(10, 25, 3);
}

void print_real_num(int integer, int fraction, int fract_part)
{
    const char* decimal_point = localeconv()->decimal_point;
    if (decimal_point[0] == '\0') {
        decimal_point = ".";
    }

    printf(
        "%d%s%0*d\n",
        integer,
        decimal_point,
        fract_part,
        fraction
    );
}

実行結果 (Visual Studio):

Japanese_Japan.932
10.025
Spanish_Spain.1252
10,025

関連

返却されるポインタが指す型である lconv構造体の内容は、setlocale関数による、LC_ALLLC_MONETARYLC_NUMERIC カテゴリの変更によって影響を受ける。

解説章


参考リンク


更新履歴

’2018/4/2 「VisualC++」という表現を「VisualStudio」に統一。

’2018/1/22 新規作成。



標準ライブラリのリファレンス(名前順)のトップページへ

標準ライブラリのリファレンス(ヘッダ別)のトップページへ

C言語編のトップページへ

Programming Place Plus のトップページへ



はてなブックマーク に保存 Pocket に保存 Facebook でシェア
X で ポストフォロー LINE で送る noteで書く
rss1.0 取得ボタン RSS 管理者情報 プライバシーポリシー
先頭へ戻る