<개인공부>/[C언어, C++]

[C언어/C++] isdigit (숫자를 판단하는 함수)

BlockDMask 2019. 11. 12. 01:27
반응형

안녕하십니다. BlockDMask 입니다. 

오늘은 C언어 및 C++에서 문자를 다룰때 이걸 숫자인지 판단해야하는 경우가 있지 않았나요?
그럴때 사용하라고 C/C++에서 이미 만들어 놓은 함수가 있습니다.

바로 IsDigit 이라는 함수 입니다.

네. 오늘은 C/C++에서 문자가 숫자인지?를 확인하는 isdigit이라는 함수에 대해서 알아보려고 합니다.

 <목차>

0. C언어, C++ isdigit 헤더 파일

1. 숫자 판단 함수 isdigit 원형과 사용법

2. C/C++ 숫자 판단 함수 isdigit 예제


0. C/C++ isdigit 헤더 파일


C언어 : <ctype.h>

C++ : <cctype>


1. isdigit 숫자 판단 함수 원형과 사용법


함수 원형

- int isdigit(int c);


매개변수로 들어온 char 타입이 10진수 숫자로 변경이 가능하면 0이 아닌 숫자(true), 아니면 0(false)를 반환하는 함수 입니다.

함수 원형을 살펴보면 매개변수 타입이 char 타입이 아닌 int 타입으로 받는걸 볼 수 있는데요, 이는 char 타입이 아스키 코드 번호로 들어갈 수 있기 때문입니다.

아스키 코드표에서 48~57번에 매칭되는 문자 '0', '1', '2', '3', '4', '5', '6', '7', '8', '9'가 들어오면 True를 반환하는 형태 입니다.


▼ C언어 스타일 배열에서의 간단 사용법

C언어 에서는 string 타입이 존재하지 않기 때문에 char 배열을 이용해서 문자열을 표현하는데요. C언어 스타일 문자열은 문자열의 끝을 알리기 위해 배열의 끝에 '\0' 문자가 들어가 있습니다.

char arr[13] = "B123456DMask";

- isdigit(arr[0]) => 'B' => 0이 나옴

- isdigit(arr[1]) => '1' => 0이 아닌 수가 나옴

- isdigit(arr[2]) => '2' => 0이 아닌 수가 나옴

- isdigit(arr[3]) => '3' => 0이 아닌 수가 나옴

- isdigit(arr[4]) => '4' => 0이 아닌 수가 나옴

- isdigit(arr[5]) => '5' => 0이 아닌 수가 나옴

- isdigit(arr[6]) => '6' => 0이 아닌 수가 나옴

- isdigit(arr[7]) => 'D' => 0이 나옴

- isdigit(arr[8]) => 'M' => 0이 나옴

- isdigit(arr[9]) => 'a' => 0이 나옴

- isdigit(arr[10]) => 's' => 0이 나옴

- isdigit(arr[11]) => 'k' => 0이 나옴

- isdigit(arr[12]) => '\0' => 0이 나옴


▼ C++ 스타일 배열에서의 간단 사용법

C++의 스트링 클래스에서는 아래와 같이 나오게 됩니다.

string str = "B123456DMask";

- isdigit(str[0]) => 'B' => 0이 나옴

- isdigit(str[1]) => '1' => 0이 아닌 수가 나옴

- isdigit(str[2]) => '2' => 0이 아닌 수가 나옴

- isdigit(str[3]) => '3' => 0이 아닌 수가 나옴

- isdigit(str[4]) => '4' => 0이 아닌 수가 나옴

- isdigit(str[5]) => '5' => 0이 아닌 수가 나옴

- isdigit(str[6]) => '6' => 0이 아닌 수가 나옴

- isdigit(str[7]) => 'D' => 0이 나옴

- isdigit(str[8]) => 'M' => 0이 나옴

- isdigit(str[9]) => 'a' => 0이 나옴

- isdigit(str[10]) => 's' => 0이 나옴

- isdigit(str[11]) => 'k' => 0이 나옴


2. C/C++ isdigit 예제 


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include<iostream>    //#include<stdio.h>
#include<cctype>    //#include<ctype.h>
using namespace std;
 
int main(void)
{
    char arr[13= "B123456Dmask";
    printf("[C언어 : char arr[13] = \"B123456Dmask\"\n");
    for (int idx = 0; idx < 13++idx)
    {
        printf("arr[%d]\t char: %c\tisdigit: %d\n", idx, arr[idx], isdigit(arr[idx]));
    }
    
    string str = "B123456Dmask";
    printf("\n\n[C++ : string str = \"B123456Dmask\"\n");
    for (int idx = 0; idx < str.size(); ++idx)
    {
        printf("str[%d]\t char: %c\tisdigit: %d\n", idx, str[idx], isdigit(str[idx]));
    }
    return 0;
}
cs


▼ 결과화면


위 결과같에서 보신바와 같이 isdigit매개변수에 '0' ~ '9' 사이의 문자가 오면 isdigit 반환 값이 0이 아닌 수가 나오게 됩니다.
숫자가 아닌 문자가 들어오면 오면 0이 나오게 됩니다.

문자가 숫자인지 판별하는 함수 isdigit() 간단하기도 하고 명확하기 때문에 유용하게 사용할 수 있을것 같습니다.
감사합니다.
반응형