안녕하세요. BlockDMask 입니다.
오늘은 C언어 C++에서 알파벳인지 확인할 수 있는 isalpha 함수에 대해 알아보려합니다.
예전에 문자가 숫자인지 확인해주는 isdigit() 함수를 소개해드린적이 있는데요. 그 함수와 비슷하게 isalpha()함수는 "이 문자가 알파벳인가?"를 확인해주는 함수라 생각하시면 됩니다.
그럼 시작해보겠습니다.
<목차>
1. isalpha 함수 원형과 사용법
2. isalpha 함수 예제
1. C/C++ isalpha 함수 설명
헤더파일
C언어 <ctype.h>
C++ <cctype>
함수원형
int isalpha (int c);
매개변수 : C언어에서 아스키 코드에 해당하는 문자들은 숫자로 표현이 되고, 문자를 넣으면 자동으로 아스키 코드에 있는 숫자로 들어가기 때문에 int 타입이긴 하지만 'a', 'A', '1' 등을 집어 넣어도됩니다.
즉, 'a' 와 같이 char 타입으로 집어 넣어도 자동으로 int 타입으로 형변환 되어서 들어가게 됩니다. 아스키 코드 표를 참고하면 'a'는 자동으로 숫자 97로 형변환되어 들어가게 됩니다.
반환형 : 매개변수로 들어온 인자가 알파벳이라면 0이 아닌 수를 반환하고 알파벳이 아니라면 0을 반환합니다.
더 정확하게 이야기하면 isalpha 함수는
알파벳 대문자 "A-Z"는 1을 반환.
알파벳 소문자 'a-z"는 2를 반환.
알파벳이 아닌것은 0을 반환합니다.
한번더 이야기 하면 isalpha 함수의 매개변수로
아스키 코드표에 'A-Z'에 해당하는 65번~90번의 값이 들어오면 1을 반환
아스키 코드표에 'a-z'에 해당하는 97번~122번의 값이 들어오면 2를 반환
그 이외의 값이 들어오면 0을 반환하는 함수 입니다.
2. C/C++ isalpha 함수 예제
2-1) 문자열 내부 하나하나 isalpha 함수로 확인
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | #include<ctype.h> #include<stdio.h> int main(void) { char str[] = "BlockDMask1234"; for (int i = 0; i < (int)strlen(str); ++i) { printf("isalpha(\'%c\') : %d\n", str[i], isalpha(str[i])); } } | cs |
문자열 "BlockDMask1234"를 isalpha 함수를 이용해서 하나하나 검사를 해보았습니다.
검사 결과
대문자 구간(A~Z)는 1로 나오고
소문자 구간(a~z)까지는 2로 나오고
알파벳 대소문자가 아닌 것들은 0으로 나오는것을 확인할 수 있습니다.
2-2) isalpha 함수 아스키 코드표에 있는 숫자로 테스트
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | #include<ctype.h> #include<stdio.h> int main(void) { // 대문자 A printf("[ %c ] isalpha(%d) : %d\n", 65, 65, isalpha(65)); // 대문자 B printf("[ %c ] isalpha(%d) : %d\n", 66, 66, isalpha(66)); // 소문자 d printf("[ %c ] isalpha(%d) : %d\n", 100, 100, isalpha(100)); // 소문자 z printf("[ %c ] isalpha(%d) : %d\n", 122, 122, isalpha(122)); // 숫자 0 printf("[ %c ] isalpha(%d) : %d\n", 48, 48, isalpha(48)); // 숫자 9 printf("[ %c ] isalpha(%d) : %d\n", 57, 57, isalpha(57)); } | cs |
아스키 코드표에 10진수에 해당하는 숫자를 한번 isalpha() 함수에 넣어보았습니다.
65번은 "A"를 뜻하고, 100번은 'd'를 말합니다. 결과값에서 보셨듯 숫자가 들어가도 아스키 코드표 기반으로 판단을 하기 때문에 대문자로 소문자로 인식하는 것을 볼 수 있습니다.
오늘 C언어 C++에서 알파벳을 확인하는 함수 isalpha 에 대해서 알아보았습니다.
제 글을 읽어주셔서 감사합니다.
'<개인공부> > [C언어, C++]' 카테고리의 다른 글
[C언어/C++] while 반복문 설명 및 예제 (0) | 2020.12.25 |
---|---|
[C언어/C++] islower, isupper 대문자 소문자 확인 (0) | 2020.12.21 |
[C언어/C++] tolower, toupper 대문자 소문자 변경 (1) | 2020.12.16 |
[C언어/C++] isspace 함수 (공백, 탭, 개행을 확인하는 함수) (0) | 2020.12.10 |
[C언어/C++] 삼각함수 sin, cos, tan 함수 설명 및 예제 (라디안 포함) (1) | 2020.11.26 |
[C언어/C++] memmove 메모리 이동 함수 설명 및 예시 (0) | 2020.11.19 |
[C언어/C++] memcpy 메모리 복사 함수 설명 및 예시 (4) | 2020.11.12 |
[C언어/C++] memset 함수 메모리 초기화 (12) | 2020.11.05 |