#C 语言标准库头文件 locale.h
请查看 C 语言标准库头文件列表 了解更多相关 API。
这个头文件提供 本地化 的相关功能,例如设置数字和货币的格式。
设置语言环境需要操作系统支持,通常需要安装语言包。
例如:
1sudo apt install language-pack-zh-hans # 安装中文语言包 2
#类型
| 类型 | 标准 | 说明 |
|---|---|---|
| lconv | C89 | 格式化详细信息 |
#宏
| 宏 | 标准 | 说明 |
|---|---|---|
| NULL | C89 | 空指针常量 |
| 本地化类别宏 | 标准 | 说明 |
|---|---|---|
| LC_ALL | C89 | 整个 C 语言环境 |
| LC_COLLATE | C89 | 排序规则类别 |
| LC_CTYPE | C89 | 字符分类类别 |
| LC_MONETARY | C89 | 货币格式化类别 |
| LC_NUMERIC | C89 | 数值格式化类别 |
| LC_TIME | C89 | 时间格式化类别 |
- 可以自定义额外的选项
#函数
| 本地化类别宏 | 标准 | 说明 |
|---|---|---|
| setlocale | C89 | 获取和设置区域 |
| localeconv | C89 | 获取当前的格式化详细信息 |
#推荐阅读
#示例
1#include <stdio.h> 2#include <locale.h> 3#include <time.h> 4 5int main(void) { 6 // 1. 获取当前 locale 7 char *old_locale = setlocale(LC_ALL, NULL); 8 printf("当前locale: %s\n", old_locale); 9 10 // 2. 设置为 zh_CN.UTF-8 11 char *new_locale = setlocale(LC_ALL, "zh_CN.UTF-8"); 12 if (new_locale == NULL) { 13 printf("无法设置locale\n"); 14 return 1; 15 } 16 printf("新locale: %s\n", new_locale); 17 18 // 3. 演示数字格式 19 printf("\n数字格式示例:\n"); 20 printf("本地格式: %'d\n", 123456789); 21 printf("默认格式: %d\n", 123456789); 22 23 // 4. 演示货币格式 24 struct lconv *lc = localeconv(); 25 printf("\n货币格式示例:\n"); 26 printf("本地货币符号: %s\n", lc->currency_symbol); 27 printf("正数货币格式: %s%.2f\n", lc->currency_symbol, 1234.56); 28 29 // 5. 演示时间格式 30 time_t t = time(NULL); 31 struct tm *lt = localtime(&t); 32 char time_str[100]; 33 34 strftime(time_str, sizeof(time_str), "%c", lt); 35 printf("\n本地时间格式: %s\n", time_str); 36 37 strftime(time_str, sizeof(time_str), "%x", lt); 38 printf("本地日期格式: %s\n", time_str); 39 40 strftime(time_str, sizeof(time_str), "%X", lt); 41 printf("本地时间格式: %s\n", time_str); 42 43 // 6. 恢复原始locale 44 setlocale(LC_ALL, old_locale); 45 46 return 0; 47} 48
运行结果:
1 2当前locale: C 3新locale: zh_CN.UTF-8 4 5数字格式示例: 6本地格式: 123,456,789 7默认格式: 123456789 8 9货币格式示例: 10本地货币符号: ¥ 11正数货币格式: ¥1234.56 12 13本地时间格式: 2025年07月29日 星期二 19时10分33秒 14本地日期格式: 2025年07月29日 15本地时间格式: 19时10分33秒 16 17
《C 语言标准库头文件 locale.h》 是转载文章,点击查看原文。

