Computer >> 컴퓨터 >  >> 프로그래밍 >> C 프로그래밍

C 언어에서 입력 문자가 알파벳, 숫자 또는 특수 문자인지 확인하는 방법

이번 글에서는 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)) 형태로 작성하면 가독성이 더 좋아지며, 코드의 의도도 명확하게 드러납니다. 다만 문자의 아스키 코드 범위를 직접 다루는 원리를 이해하는 데는 첫 번째 방식이 더 유용합니다.