85.8 문자 종류 판별하기

프로그래밍을 하다 보면 현재 문자가 영문 알파벳인지 숫자인지 판별해야 할 경우가 자주 있습니다. 이때는 일일이 ASCII 코드 범위로 확인하지 않고 다음과 같은 방법으로 손쉽게 판별할 수 있습니다.

char_is.c

#include <stdio.h>
#include <ctype.h>

int main()
{
    if (isspace('\t'))    // 스페이스, \f, \n, \r, \t, \v인지 검사
        printf("공백입니다.\n");

    if (isblank(' '))    // 스페이스, 탭 문자(\t)인지 검사
        printf("공백입니다.\n");

    if (isalpha('a'))    // 영문 알파벳인지 검사
        printf("알파벳입니다.\n");

    if (isupper('A'))    // 대문자인지 검사
        printf("대문자입니다.\n");

    if (islower('a'))    // 소문자인지 검사
        printf("소문자입니다.\n");

    if (isascii('~'))    // 7비트 ASCII 문자인지 검사
        printf("ASCII 문자입니다.\n");

    if (isdigit('9'))    // 숫자인지 검사
        printf("숫자입니다.\n");
    
    if (isxdigit('F'))    // 16진수 숫자인지 검사(0~9, a~f, A~F)
        printf("16진수 숫자입니다.\n");

    if (isalnum('a') && isalnum('1'))    // 영문 알파벳과 숫자인지 검사
        printf("영문 알파벳과 숫자입니다.\n");

    if (iscntrl('\n'))    // 제어문자인지 검사
        printf("제어문자입니다.\n");
    
    if (isgraph('a'))    // 화면에 출력할 수 있는지 검사(스페이스 제외)
        printf("화면에 출력할 수 있습니다.\n");

    if (isprint(' '))    // 화면에 출력할 수 있는지 검사(스페이스 포함)
        printf("화면에 출력할 수 있습니다.\n");

    if (ispunct('-'))    // 영문 알파벳, 숫자, 스페이스가 아닌 문자 중에서
                         // 화면에 출력할 수 있는지 검사
        printf("화면에 출력할 수 있습니다.\n");

    return 0;
}

isalpha(97)과 같이 문자 대신 ASCII 코드를 바로 넣어도 됩니다.