안녕하십니다. 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 |
▼ 결과화면
'<개인공부> > [C언어, C++]' 카테고리의 다른 글
[C언어/C++] strtok 함수(문자열 자르기)에 대해서. (14) | 2020.03.31 |
---|---|
[C언어/C++] strcmp, strncmp 함수(문자열 비교)에 대해서 (13) | 2020.01.02 |
[C언어/C++] strchr 함수(문자 검색)에 대해서 (3) | 2019.12.31 |
[C언어/C++] strlen 함수(문자열 길이)에 대해서 (1) | 2019.12.06 |
[C언어/C++] strstr 문자열 탐색 함수에 대해서 (3) | 2019.06.04 |
[C언어/C++] strcat, strncat 문자열 연결 함수에 대해서 (5) | 2019.05.24 |
[C언어/C++] strcpy, strncpy 함수(문자열 복사)에 대해서 (21) | 2019.05.16 |
[C언어/C++] gets, puts 문자열 입출력 함수에 대해서. (4) | 2019.04.15 |