C를 사용하면 LC_CTYPE이 설정되어 있는지 확인할 수있는 방법이 있습니까? printf를 다시 쓰고 % lc가 로케일이 설정되었는지에 따라 다르게 작동해야합니다.LC_CTYPE이 C에 설정되어 있는지 확인하는 방법이 있습니까?
1
A
답변
1
LC_CTYPE
은 환경 변수입니다. 플랫폼에 따라 다른 환경 변수에 액세스하는 일반적인 방법을 사용할 수 있습니다. 예를 들어, POSIX의 main
에 세 번째 envp
인수 :
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
설정하려면, 당신은 setenv(3)
제 (POSIX 표준화 그러나 C-표준화되지 않음)를 사용해야합니다
int set_lc_ctype(char const *new)
{
return setenv("LC_CTYPE", new, 1);
}
0
일반적인 방법은 사용하는 것 '은 setlocale()을'. 남자 페이지에서 :
로케일이 빈 문자열 ""는 환경 변수에 따라 설정을 수정해야 로케일의 각 부분이있는 경우.
따라서, 당신은
#include <locale.h>
// ...
char* lc_type= setlocale(LC_CTYPE, "");
에 의해 LC_TYPE를 얻을 수