C자 분류
C character classificationC 표준 라이브러리(libc) |
---|
일반적인 토픽 |
기타 헤더 |
C 문자 분류는 C 프로그래밍 언어를 위해 ANSI C 표준 라이브러리의 함수 그룹에 의해 제공되는 연산입니다.이러한 기능은 알파벳 문자, 제어 문자 등 특정 문자 클래스의 멤버십을 테스트하기 위해 사용됩니다.싱글 바이트 및 와이드 문자가 모두 지원됩니다.[1]
역사
유닉스 운영 체제에서 일하는 초기 C 언어 프로그래머들은 문자를 다른 유형으로 분류하기 위한 프로그래밍 숙어를 개발했습니다.예를 들어, ASCII 문자 세트의 경우, 값이 true인 경우, 다음 식에서 문자를 식별합니다.
('A' <=> c & & c <=> 'Z') ('a' <=> c & & c <=> 'z')
이는 여러 형식으로 표현될 수 있기 때문에 시스템 전체의 헤더파일 ctype.h에 배치되어 있는 짧고 표준화된 형식의 테스트를 도입하는 것이 바람직하게 되었습니다.
실행
위의 예와 달리 문자 분류 루틴은 비교 테스트로 작성되지 않습니다.대부분의 C 라이브러리에서는 매크로나 함수가 아닌 정적 테이블 룩업으로 작성됩니다.
예를 들어 비트필드로 배열된 256개의 8비트 정수 배열이 생성되며, 여기서 각 비트는 문자의 특정 속성, 예를 들어 isdigit isalpha에 대응한다.정수 중 최하위 비트가 isigit 속성에 해당하는 경우 코드는 다음과 같이 기술될 수 있습니다.
#정의: 숫자(x) (표[x] & 1)
Linux 초기 버전에서는 첫 번째 코드 샘플과 유사한 오류 가능성이 있는 방법을 사용했습니다.
#parames is digit(x) ((x)>= '0' & (x) <= '9')
변수 x에 부작용이 있으면 문제가 발생할 수 있습니다.예를 들어 콜이 digit(x++) 또는 isdigit(run_some_program()인 경우.isdigit에 대한 인수가 두 번 평가되는 것은 즉시 명확하지 않습니다.이러한 이유로 일반적으로 테이블 기반 접근방식이 사용됩니다.
기능의 개요
싱글바이트 문자로 동작하는 함수는 ctype으로 정의되어 있습니다.h 헤더 파일(C++의 경우 cctype).와이드 문자에 대해 작동하는 기능은 wctpe에 정의되어 있습니다.h 헤더 파일(C++의 경우 cwctype).
분류는 유효한 로케일에 따라 평가됩니다.
바이트 성격 | 넓은 성격 | 묘사 |
---|---|---|
isalnum | iswalnum | 오퍼랜드가 영숫자인지 아닌지를 확인합니다. |
isalpha | iswalpha | 오퍼랜드가 알파벳인지 아닌지를 확인합니다. |
islower | iswlower | 오퍼랜드가 소문자인지 확인합니다. |
isupper | iswupper | 오퍼랜드가 대문자인지 확인합니다. |
isdigit | iswdigit | 오퍼랜드가 숫자인지 여부를 확인합니다. |
isxdigit | iswxdigit | 오퍼랜드가 16진수인지 아닌지를 확인합니다. |
iscntrl | iswcntrl | 오퍼랜드가 제어 문자인지 확인합니다. |
isgraph | iswgraph | 피연산자가 그래픽 문자인지 확인합니다. |
isspace | iswspace | 오퍼랜드가 공간인지 확인합니다. |
isblank | iswblank | 오퍼랜드가 공백 문자인지 확인합니다. |
isprint | iswprint | 오퍼랜드가 인쇄 가능한 문자인지 확인합니다. |
ispunct | iswpunct | 오퍼랜드가 구두점인지 확인합니다. |
tolower | towlower | 오퍼랜드를 소문자로 변환합니다. |
toupper | towupper | 오퍼랜드를 대문자로 변환합니다. |
— | iswctype | 오퍼랜드가 특정 클래스에 속하는지 여부를 확인합니다. |
— | towctrans | 특정 매핑을 사용하여 오퍼랜드를 변환합니다. |
— | wctype | 에서 사용할 와이드 문자 클래스를 반환합니다.iswctype |
— | wctrans | 에서 사용하는 변환 매핑을 반환합니다.towctrans |
레퍼런스
- ^ ISO/IEC 9899:1999 specification (PDF). p. 193, § 7.4.