setlocale() 函数在 locale.h 头文件中定义。它有助于设置或读取当前程序的与地区相关的信息。
char *setlocale(int category, const char *locale) #where category will be any of the macro
setlocale() 函数接受两个参数。setlocale() 的类别宏如下。
| 参数 | 描述 | 必需/可选 |
|---|---|---|
| 类别 | 指示程序受影响的地区信息 | 必需 |
| 地区 | 一个系统特定的地区标识符。如果为 null 指针,则 setlocale() 查询当前 C 地区。 | 必需 |
它返回一个指向字符串的指针,该字符串标识应用更改后的 C 地区。
| 输入 | 返回值 |
|---|---|
| 成功时 | 指向字符串的指针 |
| 失败时 | 一个空指针 |
#include <stdio.h>
#include <locale.h>
#include <time.h>
int main () {
time_t ctime;
struct tm *timer;
char ar[80];
time( &ctime;);
timer = localtime( &ctime; );
printf("Locale : %s\n", setlocale(LC_ALL, "en_GB"));
strftime(ar,80,"%c", timer );
printf("Date : %s\n", ar);
printf("Locale : %s\n", setlocale(LC_ALL, "de_DE"));
strftime(ar,80,"%c", timer );
printf("Date : %s\n", ar);
return(0);
}
输出
Locale : en_GB Date : Fri 05 Dec 2014 10:35:02 UTC Locale : de_DE Date : Fr 05 Dez 2014 10:35:02 UTC
#include <stdio.h>
#include <locale.h>
#include <time.h>
int main()
{
char *st;
setlocale(LC_ALL, "en_US.utf8");
st = setlocale(LC_ALL, NULL);
printf("Current locale: %s\n", st);
printf("Changing locale\n");
setlocale(LC_ALL, "en_GB.utf8");
st = setlocale(LC_ALL, NULL);
printf("Current locale: %s\n", st);
return 0;
}
输出
Current locale: en_US.utf8 Changing locale Current locale: en_GB.utf8