4527

23 分钟

#C 语言标准库头文件 locale.h

这个头文件提供 本地化 的相关功能,例如设置数字和货币的格式。

设置语言环境需要操作系统支持,通常需要安装语言包。

例如:

sudo apt install language-pack-zh-hans # 安装中文语言包

#类型

类型标准说明
lconvC89格式化详细信息

#

标准说明
NULLC89空指针常量
本地化类别宏标准说明
LC_ALLC89整个 C 语言环境
LC_COLLATEC89排序规则类别
LC_CTYPEC89字符分类类别
LC_MONETARYC89货币格式化类别
LC_NUMERICC89数值格式化类别
LC_TIMEC89时间格式化类别
  • 可以自定义额外的选项

#函数

本地化类别宏标准说明
setlocaleC89获取和设置区域
localeconvC89获取当的前格式化详细信息

#推荐阅读

#示例

#include <stdio.h> #include <locale.h> #include <time.h> int main(void) { // 1. 获取当前 locale char *old_locale = setlocale(LC_ALL, NULL); printf("当前locale: %s\n", old_locale); // 2. 设置为 zh_CN.UTF-8 char *new_locale = setlocale(LC_ALL, "zh_CN.UTF-8"); if (new_locale == NULL) { printf("无法设置locale\n"); return 1; } printf("新locale: %s\n", new_locale); // 3. 演示数字格式 printf("\n数字格式示例:\n"); printf("本地格式: %'d\n", 123456789); printf("默认格式: %d\n", 123456789); // 4. 演示货币格式 struct lconv *lc = localeconv(); printf("\n货币格式示例:\n"); printf("本地货币符号: %s\n", lc->currency_symbol); printf("正数货币格式: %s%.2f\n", lc->currency_symbol, 1234.56); // 5. 演示时间格式 time_t t = time(NULL); struct tm *lt = localtime(&t); char time_str[100]; strftime(time_str, sizeof(time_str), "%c", lt); printf("\n本地时间格式: %s\n", time_str); strftime(time_str, sizeof(time_str), "%x", lt); printf("本地日期格式: %s\n", time_str); strftime(time_str, sizeof(time_str), "%X", lt); printf("本地时间格式: %s\n", time_str); // 6. 恢复原始locale setlocale(LC_ALL, old_locale); return 0; }

运行结果:

当前locale: C
新locale: zh_CN.UTF-8

数字格式示例:
本地格式: 123,456,789
默认格式: 123456789

货币格式示例:
本地货币符号: ¥
正数货币格式: ¥1234.56

本地时间格式: 2025年07月29日 星期二 19时10分33秒
本地日期格式: 2025年07月29日
本地时间格式: 19时10分33秒

创建于 2025/6/11

更新于 2025/7/29