setlocale

在头文件中定义

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

setlocale函数将指定的系统语言环境或其部分作为新的C语言环境安装。这些修改仍然有效,并会影响到所有区域设置敏感的C库函数的执行,直到下一次调用setlocale。如果locale是空指针,则setlocale查询当前的C语言环境而不修改它。

参数

category

-

区域设置类别标识符,其中一个LC_xxx宏。可能为null。

locale

-

系统特定的区域设置标识符。对于用户首选语言环境可以是“”,对于最小语言环境可以是“C”

返回值

指向一个以null结尾的空字符串的指针,该字符串在应用更改后标识C语言环境(如果有)或空指针失败。

返回的字符串以及此次调用中使用的类别的副本setlocale可能会稍后在程序中用于将语言环境恢复到此调用结束时的状态。

注意

在程序启动期间,等同于setlocale(LC_ALL, "C");在任何用户代码运行之前执行。

虽然返回类型是char*,但修改指向的字符是未定义的行为。

由于setlocale修改影响的区域设置相关的函数执行的全局状态,它是不确定的行为,从一个线程调用它,而另一个线程正在执行任意的功能如下:fprintf,isprint,iswdigit,localeconv,tolower,fscanf,ispunct,iswgraph,mblen,toupper,isalnum,isspace,iswlower,mbstowcs,towlower,isalpha,isupper,iswprint,mbtowc,towupper,isblank,iswalnum,iswpunct,setlocale,wcscoll,iscntrl,iswalpha,iswspace,strcoll,wcstod,isdigit,iswblank,iswupper,strerror,wcstombs,isgraph,iswcntrl,iswxdigit,strtod,wcsxfrm,islower,iswctype, isxdigit.

POSIX还定义了一个名为“POSIX”的语言环境,该语言环境始终可以访问,并且完全等同于默认的最小“C”语言环境。

POSIX还指定返回的指针,不仅仅是指向字符串的内容,可能会通过后续对setlocale的调用而失效。

#include

#include

#include

#include

int main(void)

{

// the C locale will be UTF-8 enabled English;

// decimal dot will be German

// date and time formatting will be Japanese

setlocale(LC_ALL, "en_US.UTF-8");

setlocale(LC_NUMERIC, "de_DE");

setlocale(LC_TIME, "ja_JP");

wchar_t str[100];

time_t t = time(NULL);

wcsftime(str, 100, L"%A %c", localtime(&t));

wprintf(L"Number: %.2f\nDate: %Ls\n", 3.14, str);

}

可能的输出:

Number: 3,14

Date: 木曜日 2014年11月06日 09時58分56秒

参考

C11标准(ISO/IEC 9899:2011): 7.11.1.1 setlocale函数(p:224-225)

C99标准(ISO/IEC 9899:1999): 7.11.1.1 setlocale函数(p:205-206)

C89/C90标准(ISO/IEC 9899:1990): 4.4.1.1 setlocale函数

另请参阅

LC_ALLLC_COLLATELC_CTYPELC_MONETARYLC_NUMERICLC_TIME

locale categories for setlocale (macro constant)

| C ++文档的setlocale |

c语言setlocale第二个参数,setlocale_本地化支持 | Localization support_C_参考手册_非常教程...相关推荐

  1. c语言strtol函数用法,strtol_字符串 | Strings_C_参考手册_非常教程

    strtol 在头文件中定义 ​ ​ long strtol(const char * str,char ** str_end,int base); ​ (直到C99) long strtol(con ...

  2. c语言hypot函数,hypot_数值 | Numerics_C_参考手册_非常教程

    hypot 在头文件中定义 ​ ​ float hypotf(float x,float y); (1) (自C99以来) double hypot(double x,double y); (2) ( ...

  3. c语言strrchr函数,strrchr_字符串 | Strings_C_参考手册_非常教程

    strrchr 在头文件中定义 ​ ​ char * strrchr(const char * str,int ch); ​ ​ 通过 str 指向的以空字符结尾的字节字符串(每个字符解释为无符号字符 ...

  4. c语言erfc函数,erfc_数值 | Numerics_C_参考手册_非常教程

    erfc 在头文件中定义 ​ ​ float erfcf(float arg); (1) (自C99以来) 双erfc(double arg); (2) (自C99以来) long double er ...

  5. c语言sinf函数,sinf_数值 | Numerics_C_参考手册_非常教程

    sinf 在头文件中定义 ​ ​ float sinf(float arg); (1) (自C99以来) double sin(double arg); (2) ​ long double sinl( ...

  6. c语言isnan,isnan_数值 | Numerics_C_参考手册_非常教程

    isnan 在头文件中定义 ​ ​ #define isnan(arg) /* implementation defined */ ​ (since C99) 确定给定的浮点数arg是否为非数字(Na ...

  7. java语言实现strtod方法,strtod_字符串 | Strings_C_参考手册_非常教程

    strtod 在头文件中定义 ​ ​ float strtof(const char * restrict str,char ** restrict str_end); ​ (自C99以来) doub ...

  8. C语言strftime()函数 (格式化时间)(注意第二个参数size_t maxsize一定要大于第三个参数const char *format指向字符串的长度)

    需包含:C 标准库 - <time.h> 文章目录 描述 声明 参数 返回值 实例 使用☞坑(注意第二个参数size_t maxsize一定要大于第三个参数const char *form ...

  9. c语言里的多参数吗,C语言中不定参数的实现

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 但是请注意,由於 K&R C 中并不检查参数型态,so 在此是用 ANSI C 来说明,毕竟 ANSI C 是目前所有 C Compiler 都支 ...

  10. C语言中结构体参数变量的传递

    c语言  结构体  函数  参数  传递 一.前言 本文中的程序实现对员工信息结构体字段赋值并打印出来的功能.该结构体的定义如下: // 员工信息结构体 typedef struct {INT8 sz ...

最新文章

  1. 《代码大全》阅读笔记-26-代码调整技术
  2. Hibernate的generator属性
  3. 工作笔记-安装完virtualbox,新建好虚拟机却提示无法打开
  4. 模型算法_生产建模型 算法控效率
  5. 使用queryperf对DNS服务器作压力测试
  6. Yann LeCun送你的春节大礼:免费学习全部2020春季深度学习课程
  7. SCCM2007系列教程之一SCCM2007的安装
  8. 解决串口数据接收,实际值FF,接收却是FFFFFFFF
  9. 无线通信定位一体化进展及其在煤矿井下应用分析
  10. 如何批量删除Word中向下箭头的符号
  11. 获取cad注册表路径
  12. c语言汉字属于什么类型_C语言为什么需要定义数据类型
  13. opengl——贴图
  14. alot英文怎么读_漂亮的英文是什么英语怎么说
  15. Word Embedding 知识总结
  16. 拼多多——多多的字符变换
  17. PyQt5 密码输入框
  18. Python中的Lasso回归之最小角算法LARS
  19. 线程的 run() 和 start() 有什么区别?
  20. rxjs 经典使用场景

热门文章

  1. ks检验正态分布结果_SPSS实现Shapiro-Wilk正态分布检验
  2. 动态物体检测(python)
  3. 易语言php验证码识别,易语言自动打码验证码服务端带案例
  4. linux系统中连接两个网桥,Linux 网桥代码分析 (二)
  5. ubuntu系统给u盘拷贝文件
  6. 手把手教你7个常见数据库使用方法
  7. 2022新版UI聚合支付系统四方系统源码+修复漏洞完美版
  8. zscore标准化步骤_几种常用数据标准化方法
  9. scala 如何读取 csv 文件
  10. 在线IDE开发入门之从零实现一个在线代码编辑器