使用C,有没有办法找出是否设置了LC_CTYPE?我正在重写printf,我的%lc需要以不同的方式工作,具体取决于是否设置了语言环境。
答案 0 :(得分:1)
LC_CTYPE
是一个环境变量。您可以使用任何访问环境变量的常规方法,这些方法因平台而异。例如,POSIX与envp
的第三个main
参数:
int main(int argc, char **argv, char **envp);
或标准C89 getenv()
功能:
char *getenv(const char *name);
例如:
#include <stdlib.h>
char const *get_lc_ctype()
{
return getenv("LC_CTYPE");
}
注意不要修改getenv(3)
返回的字符串,这是未定义的行为。如果你想设置LC_CTYPE
,你应该使用(POSIX标准化但不是C标准化的)setenv(3)
:
int set_lc_ctype(char const *new)
{
return setenv("LC_CTYPE", new, 1);
}
答案 1 :(得分:0)
通用方法是使用'setlocale()'。 从手册页:
如果locale是一个空字符串,“”,应该修改的语言环境的每个部分都是根据 环境变量。
因此,您可以通过
获得LC_TYPE#include <locale.h>
// ...
char* lc_type= setlocale(LC_CTYPE, "");