본문 바로가기
컴퓨터/C, C++

[C언어] 아스키코드 활용 알파벳 판별 및 대소문자 판별 프로그램

by 도도새 도 2021. 12. 7.

C언어 대소문자 판별 프로그램

 

 C언어에서 값이 대문자인지 소문자인지 판별하는 프로그램을 작성합니다. 만약 쉽게 하고 싶다면, <ctype.h>를 인클루드해서 islower() isupper()함수를 사용할 수 있습니다. 여기서 저는 대소문자 구별 함수를 직접 구현합니다.

 

 대소문자 구별을 위해서 아스키 코드를 활용할 것입니다. 하지만 직접 아스키 코드를 입력하지는 않고, 문자가 아스키 코드 상에서 순서를 가진다는 것을 활용합니다.

대소문자 판별 코드

알파벳 및 대소문자 판별 코드

간단 설명:

4번쨰 줄 : 입력한 문자 ch가 a보다 크고, z보다 작고(아스키 코드 상에서 ch의 아스키 값이 a와 z의 아스키 값 사이에 있다면), A보다크고, Z보다 작다면 if문 실행 ; 알파벳 대문자이거나 소문자일 때 트루

11번쨰 줄 : Z보다 작다면 1 리턴, 즉 입력한 문자가 대문자임을 의미

(대문자가 소문자보다 아스키테이블 상에서 앞쪽에 있으므로 Z보다 작다, 라고만 해도 범위에 알파벳 소문자를 포함하지 않습니다.)

25번째 줄 : 11번째 줄이 0을 리턴하는 경우 해당 문자는 소문자임을 의미

이유: 앞서 해당 문자가 알파벳임은 검증을 끝냈음, 게다가 대문자가 아니므로 소문자인 경우밖에 남지 않음

#include <stdio.h>

int isAlphabet(char ch){
	if('a'<=ch && 'z'>=ch || 'A'<=ch && 'Z'>=ch)
		return 1;
	else
		return 0;
}

int isUpper(char ch){
	if(ch<='Z')
		return 1;
	else
		return 0;	
}

int main(void){
	char ch;
	
	scanf("%c", &ch);
	printf("%c is ", ch);
	if (isAlphabet(ch)){
		if(isUpper(ch))
			printf("대문자입니다.\n");
		else
			printf("소문자입니다.\n");
	}
	else
		printf("알파벳이 아닙니다.\n");
		
	return 0;
}

 

 

참조. 아스키 테이블

 

아래 아스키 테이블을 참조하면 코드의 의도를 파악하기 쉽습니다. 

아스키 테이블 표

 

댓글