C setlocale()

setlocale() 函数在 locale.h 头文件中定义。它有助于设置或读取当前程序的与地区相关的信息。


char *setlocale(int category, const char *locale) #where category will be any of the macro
 

setlocale() 参数

setlocale() 函数接受两个参数。setlocale() 的类别宏如下。

  • LC_ALL  -  选择所有 C 地区
  • LC_COLLATE  -    选择排序类别
  • LC_CTYPE   -   选择字符分类类别
  • LC_MONETARY  -    选择货币格式类别
  • LC_NUMERIC   -  选择数字格式类别
  • LC_TIME   -  选择时间格式类别
参数 描述 必需/可选
类别 指示程序受影响的地区信息 必需
地区 一个系统特定的地区标识符。如果为 null 指针,则 setlocale() 查询当前 C 地区。 必需

setlocale() 返回值

它返回一个指向字符串的指针,该字符串标识应用更改后的 C 地区。

输入 返回值
成功时 指向字符串的指针
失败时 一个空指针

setlocale() 示例

示例 1:C 语言中 setlocale() 函数的工作原理


#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

示例 2:C 语言中 setlocale() 函数如何工作?


#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