728x90
반응형
C 표준 라이브러리 ctype.h
변환 함수 정리
C 언어에서 제공하는 ctype.h
헤더 파일은 문자 처리를 위한 다양한 함수를 포함하고 있습니다. 특히, 대소문자 변환과 관련된 함수는 문자열을 처리할 때 유용하게 사용할 수 있습니다. 이번 포스팅에서는 tolower
, toupper
등의 변환 함수에 대해 자세히 살펴보겠습니다.
1. tolower
함수
tolower
함수는 대문자를 소문자로 변환하는 함수입니다. 만약 인자로 전달된 문자가 대문자라면 해당하는 소문자로 변환하고, 그렇지 않으면 그대로 반환합니다.
함수 원형
#include <ctype.h>
int tolower(int c);
매개변수
c
: 변환할 문자 (정수형 값, 보통char
값을int
로 변환하여 전달)
반환값
- 대문자인 경우 해당하는 소문자 반환
- 그 외의 경우는 그대로 반환
사용 예제
#include <stdio.h>
#include <ctype.h>
int main() {
char upper = 'A';
char lower = tolower(upper);
printf("%c -> %c\n", upper, lower);
char nonAlpha = '1';
printf("%c -> %c\n", nonAlpha, tolower(nonAlpha));
return 0;
}
실행 결과
A -> a
1 -> 1
2. toupper
함수
toupper
함수는 소문자를 대문자로 변환하는 함수입니다. 만약 인자로 전달된 문자가 소문자라면 해당하는 대문자로 변환하고, 그렇지 않으면 그대로 반환합니다.
함수 원형
#include <ctype.h>
int toupper(int c);
매개변수
c
: 변환할 문자 (정수형 값, 보통char
값을int
로 변환하여 전달)
반환값
- 소문자인 경우 해당하는 대문자 반환
- 그 외의 경우는 그대로 반환
사용 예제
#include <stdio.h>
#include <ctype.h>
int main() {
char lower = 'b';
char upper = toupper(lower);
printf("%c -> %c\n", lower, upper);
char nonAlpha = '3';
printf("%c -> %c\n", nonAlpha, toupper(nonAlpha));
return 0;
}
실행 결과
b -> B
3 -> 3
3. 문자열 변환 응용 예제
보통 tolower
와 toupper
는 개별 문자 변환을 위한 함수이지만, 이를 활용하여 문자열 전체를 변환하는 함수를 만들 수도 있습니다.
소문자로 변환하는 함수
#include <stdio.h>
#include <ctype.h>
void strToLower(char *str) {
while (*str) {
*str = tolower(*str);
str++;
}
}
int main() {
char str[] = "Hello World!";
printf("원본: %s\n", str);
strToLower(str);
printf("소문자 변환: %s\n", str);
return 0;
}
실행 결과
원본: Hello World!
소문자 변환: hello world!
대문자로 변환하는 함수
#include <stdio.h>
#include <ctype.h>
void strToUpper(char *str) {
while (*str) {
*str = toupper(*str);
str++;
}
}
int main() {
char str[] = "Hello World!";
printf("원본: %s\n", str);
strToUpper(str);
printf("대문자 변환: %s\n", str);
return 0;
}
실행 결과
원본: Hello World!
대문자 변환: HELLO WORLD!
4. 변환 함수의 주의점
- ASCII 문자만 지원:
tolower
와toupper
는 ASCII 문자에 대해 동작하며, 일부 다국어 문자(예: 한글, 일본어, 중국어 등)에는 적용되지 않습니다. - 정수형 매개변수 사용: 함수의 매개변수가
int
타입이므로, 반드시unsigned char
또는EOF
와 호환되는 값만 전달해야 합니다. 그렇지 않으면 정의되지 않은 동작(UB)이 발생할 수 있습니다. locale.h
와 함께 사용 가능: 지역화(Locale)를 고려한 문자 변환이 필요하면setlocale()
을 사용하여 로케일을 설정해야 합니다.
예를 들어, 특정 언어 환경에서 로케일을 설정하여 tolower
동작을 확인할 수 있습니다.
#include <stdio.h>
#include <ctype.h>
#include <locale.h>
int main() {
setlocale(LC_CTYPE, "en_US.UTF-8");
printf("Ä -> %c\n", tolower('Ä'));
return 0;
}
5. 결론
C 언어에서 tolower
와 toupper
함수는 간단하지만 강력한 문자 변환 기능을 제공합니다. 문자열을 변환하는 유틸리티 함수를 만들면 보다 효과적으로 사용할 수 있으며, 다국어 지원이 필요한 경우 locale.h
를 활용하는 것이 중요합니다.
반응형
'c 언어 > c 표준 라이브러리(Standard C Library)' 카테고리의 다른 글
C 언어에서 메모리 누수 방지 및 디버깅 기법 (0) | 2025.03.04 |
---|---|
errno.h 개요 및 에러 처리 (errno, strerror, perror) (0) | 2025.03.03 |
C 표준 라이브러리 `ctype.h` 개요 및 문자 판별 함수 (0) | 2025.03.01 |
C qsort와 bsearch를 활용한 정렬 및 검색 (0) | 2025.02.28 |
C 언어에서 rand와 srand를 활용한 난수 생성 (0) | 2025.02.27 |