이번 글에서는 C 언어에서 사용자가 입력한 문자가 알파벳, 숫자, 아니면 특수 문자인지 판별하는 방법을 알아보겠습니다.
판별 기준은 매우 간단합니다. 알파벳은 대문자 A~Z와 소문자 a~z 범위에 해당하고, 숫자는 0~9 범위에 속합니다. 그리고 이 두 범위에 포함되지 않는 나머지 모든 문자는 특수 문자로 분류됩니다. 따라서 이 조건들을 순서대로 검사하기만 하면 입력된 문자의 종류를 쉽게 확인할 수 있습니다.
예제 코드
#include <stdio.h>
#include <conio.h>
main() {
char ch;
printf("Enter a character: ");
scanf("%c", &ch);
if((ch >= 'A' && ch <= 'Z') || (ch >= 'a' && ch <= 'z'))
printf("This is an alphabet");
else if(ch >= '0' && ch <= '9')
printf("This is a number");
else
printf("This is a special character");
}코드 설명
먼저 scanf() 함수를 통해 사용자로부터 한 개의 문자를 입력받습니다. 그다음 if-else if-else 조건문을 사용하여 다음과 같이 판별합니다.
- 첫 번째 조건: 문자가 'A'~'Z' 또는 'a'~'z' 사이에 있으면 알파벳으로 판별합니다. 아스키 코드 값의 연속성을 이용해 비교 연산자로 범위를 검사하는 방식입니다.
- 두 번째 조건: 문자가 '0'~'9' 사이에 있으면 숫자로 판별합니다.
- 그 외의 경우: 위 조건에 모두 해당하지 않으면 특수 문자로 판별합니다.
실행 결과
알파벳을 입력한 경우:
Enter a character: F This is an alphabet
Enter a character: r This is an alphabet
숫자를 입력한 경우:
Enter a character: 7 This is a number
특수 문자를 입력한 경우:
Enter a character: # This is a special character
참고: 라이브러리 함수 활용하기
위와 같이 직접 조건을 비교하는 방법 외에도, C 표준 라이브러리의 <ctype.h> 헤더에 포함된 함수를 사용하면 더 간결하게 처리할 수 있습니다.
isalpha(ch): 문자가 알파벳이면 참(0이 아닌 값)을 반환합니다.isdigit(ch): 문자가 숫자(0~9)이면 참을 반환합니다.
예를 들어 if(isalpha(ch)), else if(isdigit(ch)) 형태로 작성하면 가독성이 더 좋아지며, 코드의 의도도 명확하게 드러납니다. 다만 문자의 아스키 코드 범위를 직접 다루는 원리를 이해하는 데는 첫 번째 방식이 더 유용합니다.