[C/C++] 라이브러리 함수(isalnum, isalpha, isupper, islower, isdigit, isspace)를 이용하여 문자열 내 알파벳, 숫자, 영어 대소문자, 공백 식별하기 + 대소문자 변환(toupper, tolower)하기
안녕하세요 JollyTree입니다 (•̀ᴗ•́)و
지난 번에는 별도의 C/C++ 라이브러리를 사용하지 않고 ASCII 코드 테이블만을 이용하여 사용자가 입력한 문자열 내에서 알파벳 대소문자, 공백, 숫자 등을 식별하여 분류하였습니다.
※ 참고: [C/C++] ASCII 값을 이용하여 문자열 내 알파벳, 대소문자, 공백, 숫자 식별(분류)하기 + 대소문자 변환하기 |
지난 번 자료에서 조금 더 고민해 보면 m_isdigit(), m_isalpha(), m_isalnum(), m_isupper(), m_islower() 등과 같이 C/C++에서 제공해 주는 라이브러리와 유사하게 사용자 정의 함수를 만들어 보는 것도 좋은 스터디 방법으로 생각됩니다.
사용자 정의 함수로 직접 구현한 알파벳, 대소문자, 숫자 구별하기 예제(Example):
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
|
#include <stdio.h>
#include <string.h>
int m_isalpha(int c)
{
return ((c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z'));
}
int m_isupper(int c)
{
return ((c >= 'A' && c <= 'Z'));
}
int m_islower(int c)
{
return ((c >= 'a' && c <= 'z'));
}
int m_isdigit(int c)
{
return (c >= '0' && c <= '9');
}
int m_isalnum(int c)
{
return (m_isalpha(c) || m_isdigit(c));
}
int main()
{
char input[50] = "123! HelloWorld! #&%^*&(";
char a;
for (int i = 0; i < strlen(input); i++)
{
a = input[i];
if (m_isalnum(a))
{
if (m_isalpha(a))
printf("%c = 알파벳\n", a);
else if (m_isdigit(a))
printf("%c = 숫자\n", a);
else
printf("%c = 기타 문자\n", a);
}
else
printf("%c = 기타 문자\n", a);
}
return 0;
}
|
cs |
사용자 정의 함수를 이용한 방법과 C/C++ 라이브러리를 이용한 방법은 난이도가 높거나 또는 낮거나를 판단하는 것은 의미가 없으며 다만 코딩시 알아두면 유용한 정보가 되리라 생각됩니다. 이번에는 C/C++ 라이브러리를 이용하여 같은 결과를 도출해 보고자 합니다. 과정은 사용자 정의 함수를 이용한 방법과 크게 다르지 않습니다.
C/C++ 라이브러리를 이용한 대소문자, 숫자, 공백 등 식별하기 예제(Example):
#include <stdio.h>
#include <string.h>
#include <ctype.h>
int main()
{
char input[50] = "";
char c;
printf("문자열을 입력하세요(예;\"Hello World! 123AbcDEf !@#@\"):");
gets_s(input);
for (int i = 0; i < strlen(input); i++)
{
c = input[i];
if (isalnum(c))
{
if (isalpha(c))
{
if (isupper(c))
printf("%c 는 알파벳 소문자\n", c);
else if (islower(c))
printf("%c 는 알파벳 대문자\n", c);
else
printf("알 수 없음\n");
}
else if (isdigit(c))
printf("%c 는 숫자\n", c);
}
else if (isspace(c))
printf("%c 는 공백\n", c);
else
printf("%c 는 기타 문자\n", c);
}
//모두 대문자로 변경
printf("모든 알파벳을 대문자로 변경: ");
for (int i = 0; i < strlen(input); i++)
putchar(toupper(input[i]));
putchar('\n');
//모두 소문자로 변경
printf("모든 알파벳을 소문자로 변경: ");
for (int i = 0; i < strlen(input); i++)
putchar(tolower(input[i]));
putchar('\n');
return 0;
}
|
cs |
실행결과(Output):
실행결과 문자를 정상적으로 구분하였습니다. 예제코드에는 알파벳을 대문자로 변경하는 toupper()와 소문자로 변경하는 tolower()함수 사용법도 포함되어 있습니다. 이상 JollyTree였습니다 (•̀ᴗ•́)و
'Coding & Programming > C, C++' 카테고리의 다른 글
[C언어/C++] 문자열 길이 구하기 : strlen() 함수 ID/Password 길이 체크 예제 (2) | 2021.04.22 |
---|---|
[C언어/C++] printf, scanf 함수 변수 입출력 예제(정수, 실수, 줄바꿈 등 포맷 지정자:format specifiers) (4) | 2021.04.21 |
[C/C++] ASCII 코드값을 이용하여 문자열 내 알파벳, 대소문자, 공백, 숫자 식별(분류)하기 + 대소문자 변환하기 (0) | 2021.04.12 |
[C/C++] C언어 수학 함수(round, ceil, floor) 직접 구현 하기(예제포함) (2) | 2021.04.10 |
[C/C++] C언어 수학 함수(pow, sqrt, abs, fabs) 직접 구현 하기(예제포함) (7) | 2021.04.09 |