[C언어/C++] 문자열 대소문자 판별 (isupper, islower) 함수 사용법 & 예제

모든 문자들은 아스키코드값으로 이루어져 있습니다. 숫자는 48 ~ 57까지 대문자는 65 ~ 90까지 소문자는 97 ~ 122번까지로 구성되어 있죠. 이러한 특성을 활용한다면 문자열을 판별하여 해당 문자가 대문자인지 소문자인지 숫자인지 특수 기호인지를 구분할 수 있는 프로그램을 만들 수 있습니다.

#include <stdio.h>

void main()
{
    char input[1000];
    int temp1 = 0, temp2 = 0, temp3 = 0, temp4 = 0;
    int count = 0;
    
    printf("문자열을 입력하세요 \n");
    gets_s(input);
    while (input[count]) {
        if (input[count] >= 65 && input[count] <= 90) // 대문자
            temp1++;
        else if (input[count] >= 97 && input[count] <= 122) // 소문자
            temp2++;
        else if (input[count] >= 48 && input[count] <= 57) // 숫자
            temp3++;
        else // 나머지
            temp4++;
        count++;
    }
    printf("대문자 : %d\n", temp1);
    printf("소문자 : %d\n", temp2);
    printf("숫자 : %d\n", temp3);
    printf("기타 : %d\n", temp4);
}

문자 판별

위와 같이 아스키코드의 범위를 분석하는것 만으로도 문자를 판별할 수 있습니다. 특히 문자열 판별은 대,소문자 구분을 해야 할때 많이 사용되게 됩니다. 위와 같이 if문을 사용하기 귀찮다면 C언어/C++에서 대소문자 구분을 위해 제공하고 있는 함수 islower, isupper를 사용하셔도 됩니다. 이름에서 알 수 있듯 islower는 소문자를 판별하는 함수 isupper는 대문자를 판별하는 함수입니다.

 

※ 참고로 숫자를 판별하는 함수는 isgidit()입니다.

 

대소문자 판별 (isupper, islower) 함수 사용법

#include <ctype.h> //C언어
#include <cctype> //C++

isupper(문자열) //대문자 판별 (대문자가 아니라면 0이 반환)
islower(문자열) //소문자 판별 (소문자가 아니라면 0이 반환)

islower, isupper함수를 사용하기 위해서는 해당 함수가 포함되어있는 <ctype.h> 헤더를 포함해야 합니다. C++의 경우 <cctype>헤더를 포함하시면 됩니다. 두 함수는 인자값으로 들어온 문자를 아스키코드로 변환하여 판별한 후 대문자 / 소문자라면 0이 아닌 숫자를 반환합니다.

 

대소문자 판별 (isupper, islower) 함수 사용 예제

#include <stdio.h>
#include <ctype.h> //C언어
#include <cctype> //C++

void main()
{
    char input[1000];
    
    int temp1 = 0, temp2 = 0;
    int count = 0;
    
    printf("문자열을 입력하세요 \n");
    gets_s(input);
    while (input[count]) {
        if (isupper(input[count])) // 대문자 판별 isupper
            temp1++;
        else if (islower(input[count])) // 소문자 판별 islower
            temp2++;
        count++;
    }
    printf("대문자 : %d\n", temp1);
    printf("소문자 : %d\n", temp2);
}

대소문자 판별

위와 같이 if문의 조건식에서 isupper, islower함수를 사용하여 대소문자를 판별할 수 있습니다.

 

만약 대/소문자 변환하는 방법이 궁금하다면 아래글을 참고해주세요.

[C언어/C++] 문자열 대소문자 변환(toupper, tolower) 함수 사용법 & 예제

댓글

Designed by JB FACTORY