isdigit

isdigit

한 문자가 숫자(0~9)인지 확인할 때 써요. <ctype.h>의 문자 분류 함수 중 하나예요.

출처: cppreference

본문

문법 (Syntax)

int isdigit ( int ch );

설명 (Explanation)

주어진 문자가 숫자 문자(0123456789)인지 확인해요.

ch의 값이 unsigned char로 표현할 수 없고 EOF와도 같지 않으면 동작이 정의되지 않아요.

매개변수 (Parameters)

  • ch — 분류할 문자

반환값 (Return value)

문자가 숫자면 0이 아닌 값, 아니면 0을 반환해요.

참고 (Notes)

isdigitisxdigit은 표준 좁은 문자 분류 함수 중에서 현재 설치된 C 로케일의 영향을 받지 않는 유일한 함수들이에요. 다만 일부 구현(예: Microsoft의 1252 코드페이지)은 추가적인 단일 바이트 문자를 숫자로 분류할 수도 있어요. 그래서 '로케일 영향이 없다'는 점이 기본 동작이고, 구현에 따른 예외는 있을 수 있다고 보시면 돼요.

예시 (Example)

0부터 UCHAR_MAX까지 전수 조사해서 숫자로 분류되는 문자를 나란히 찍어요. 결과가 정확히 0~9만 나와요.

#include <ctype.h>
#include <limits.h>
#include <stdio.h>
 
int main(void)
{
    for (int ndx = 0; ndx <= UCHAR_MAX; ++ndx)
        if (isdigit(ndx))
            printf("%c", ndx);
    printf("\n");
}

가능한 출력 (Possible output):

0123456789

참고 문헌 (References)

  • C23 표준 (ISO/IEC 9899:2024): 7.4.1.5 The isdigit function (p: TBD)
  • C17 표준 (ISO/IEC 9899:2018): 7.4.1.5 The isdigit function (p: 146)
  • C11 표준 (ISO/IEC 9899:2011): 7.4.1.5 The isdigit function (p: 201)
  • C99 표준 (ISO/IEC 9899:1999): 7.4.1.5 The isdigit function (p: 182)
  • C89/C90 표준 (ISO/IEC 9899:1990): 4.3.1.4 The isdigit function

더 알아보기

  • 와이드 문자 버전인 iswdigit(C95)도 있어요.
  • 16진수 숫자(09, af, A~F)까지 확인하려면 isxdigit을 보세요.
  • cppreference 원문에서 isdigit의 자세한 내용을 확인할 수 있어요.