当前位置: 首页 > 文档资料 > C 标准库 中文版 >

char *setlocale(int category, const char *locale)

优质
小牛编辑
125浏览
2023-12-01

描述 (Description)

C库函数char *setlocale(int category, const char *locale)设置或读取位置相关信息。

声明 (Declaration)

以下是setlocale()函数的声明。

char *setlocale(int category, const char *locale)

参数 (Parameters)

  • category - 这是一个命名常量,指定受语言环境设置影响的函数的类别。

    • LC_ALL适用于以下所有内容。

    • LC_COLLATE用于字符串比较。 请参阅strcoll()。

    • LC_CTYPE用于字符分类和转换。 例如 - strtoupper()。

    • LC_MONETARY用于localeconv()的货币格式。

    • LC_NUMERIC用于localeconv()的小数分隔符。

    • 使用strftime()格式化日期和时间的LC_TIME

    • LC_MESSAGES用于系统响应。

  • locale - 如果locale为NULL或空字符串“”,则将根据与上述类别具有相同名称的环境变量的值设置区域设置名称。

返回值 (Return Value)

成功调用setlocale()会返回与区域设置对应的不透明字符串。 如果无法遵守请求,则返回值为NULL。

例子 (Example)

以下示例显示了setlocale()函数的用法。

#include <locale.h>
#include <stdio.h>
#include <time.h>
int main () {
   time_t currtime;
   struct tm *timer;
   char buffer[80];
   time( &currtime );
   timer = localtime( &currtime );
   printf("Locale is: %s\n", setlocale(LC_ALL, "en_GB"));
   strftime(buffer,80,"%c", timer );
   printf("Date is: %s\n", buffer);
   printf("Locale is: %s\n", setlocale(LC_ALL, "de_DE"));
   strftime(buffer,80,"%c", timer );
   printf("Date is: %s\n", buffer);
   return(0);
}

让我们编译并运行上面的程序,它将产生以下结果 -

Locale is: en_GB                                                            
Date is: Fri 05 Dec 2014 10:35:02 UTC                                       
Locale is: de_DE                                                            
Date is: Fr 05 Dez 2014 10:35:02 UTC