isalnum
isalnum
한 문자가 숫자인지 알파벳인지, 즉 영숫자(alphanumeric)인지 확인할 때 써요. <ctype.h>의 문자 분류 함수 중 하나예요.
출처: cppreference
본문
문법 (Syntax)
int isalnum ( int ch );
설명 (Explanation)
현재 C 로케일이 분류하는 기준으로, 주어진 문자가 영숫자인지 확인해요. 기본 로케일에서는 다음 문자들이 영숫자예요.
- 숫자 (
0123456789) - 대문자 (
ABCDEFGHIJKLMNOPQRSTUVWXYZ) - 소문자 (
abcdefghijklmnopqrstuvwxyz)
ch의 값이 unsigned char로 표현할 수 없고 EOF와도 같지 않으면 동작이 정의되지 않아요. 문자 분류 함수를 쓸 때 흔히 하는 실수인데, char 값을 그대로 넘기면 범위 문제가 생길 수 있으니 주의하세요.
매개변수 (Parameters)
- ch — 분류할 문자
반환값 (Return value)
문자가 영숫자면 0이 아닌 값, 아니면 0을 반환해요.
예시 (Example)
로케일에 따라 분류 결과가 달라지는 걸 보여주는 예시예요. 기본 C 로케일에서는 ß(독일어 에스체트)를 영숫자로 보지 않지만, ISO-8859-1 로케일에서는 영숫자로 분류해요.
#include <ctype.h>
#include <locale.h>
#include <stdio.h>
int main(void)
{
unsigned char c = '\xdf'; // German letter ß in ISO-8859-1
printf("isalnum('\\xdf') in default C locale returned %d\n", !!isalnum(c));
if (setlocale(LC_CTYPE, "de_DE.iso88591"))
printf("isalnum('\\xdf') in ISO-8859-1 locale returned %d\n", !!isalnum(c));
}
가능한 출력 (Possible output):
isalnum('\xdf') in default C locale returned 0
isalnum('\xdf') in ISO-8859-1 locale returned 1
참고 문헌 (References)
- C23 표준 (ISO/IEC 9899:2024): 7.4.1.1 The isalnum function (p: TBD)
- C17 표준 (ISO/IEC 9899:2018): 7.4.1.1 The isalnum function (p: 145)
- C11 표준 (ISO/IEC 9899:2011): 7.4.1.1 The isalnum function (p: 200)
- C99 표준 (ISO/IEC 9899:1999): 7.4.1.1 The isalnum function (p: 181)
- C89/C90 표준 (ISO/IEC 9899:1990): 4.3.1.1 The isalnum function
더 알아보기
- 와이드 문자 버전인 iswalnum도 있어요. 넓은 문자를 다룬다면 그쪽을 쓰세요.
- 알파벳만 확인하고 싶다면 isalpha를 보세요.
- cppreference 원문에서
isalnum의 자세한 내용을 확인할 수 있어요.