반응형
반응형
문자열 토큰화 및 기타 검색, 로케일에 따른 문자열 비교 함수
문자열 토큰화 strtok
문자열 str을 구분자 delim를 기준으로 분리하여 토큰화하는 함수입니다. 재귀적으로 호출하여 문자열의 각 토큰을 추출합니다.
함수 원형
char *strtok(char *str, const char *delim);
예제
#include <stdio.h>
#include <string.h>
int main() {
char str[] = "apple,orange,banana";
char *token = strtok(str, ",");
while (token != NULL) {
printf("%s\n", token);
token = strtok(NULL, ",");
}
return 0;
}
실행 결과
apple
orange
banana
strtok을 사용해 문자열을 ,로 분리하여 각 토큰을 출력합니다.
마지막 특정 문자 찾기 strrchr
문자열 str에서 특정 문자 c의 마지막 출현 위치를 반환하는 함수입니다.
함수 원형
char *strrchr(const char *str, int c);
예제
#include <stdio.h>
#include <string.h>
int main() {
char str[] = "hello world";
char *last_occur = strrchr(str, 'l');
if (last_occur != NULL) {
printf("Last occurrence of 'l' found at: %ld\n", last_occur - str);
} else {
printf("Character not found!\n");
}
return 0;
}
실행 결과
Last occurrence of 'l' found at: 9
문자열에서 문자 'l'의 마지막 위치는 인덱스 9에 있습니다.
로케일에 따른 문자열 비교 strcoll
현재 로케일을 기준으로 두 문자열 str1과 str2를 비교하는 함수입니다.
함수 원형
int strcoll(const char *str1, const char *str2);
예제
#include <stdio.h>
#include <string.h>
#include <locale.h>
int main() {
setlocale(LC_COLLATE, "en_US.UTF-8");
char *str1 = "abc";
char *str2 = "ABC";
int result = strcoll(str1, str2);
if (result == 0) {
printf("Strings are equal.\n");
} else {
printf("Strings are not equal.\n");
}
return 0;
}
실행 결과
Strings are not equal.
strcoll 함수는 로케일에 따라 두 문자열을 비교하여 대소문자 구분 여부를 결정합니다.
로케일
로케일(Locale)은 소프트웨어가 언어, 국가, 문화적인 요소에 따라 다르게 동작할 수 있도록 설정하는 환경 변수를 말합니다. 로케일은 프로그램이 다음과 같은 동작을 현지화(지역화)할 수 있게 해줍니다.
- 문자열 정렬과 비교: 알파벳의 정렬 순서나 대소문자 비교를 현지 언어 규칙에 따라 처리합니다.
- 날짜와 시간 형식: 날짜와 시간의 형식(예: "YYYY-MM-DD" vs "DD/MM/YYYY")을 해당 문화권의 표준에 맞게 표시합니다.
- 숫자와 통화 형식: 소수점, 천 단위 구분자, 통화 기호 등을 지역에 맞게 표시합니다.
- 문자 입력 및 출력: 텍스트 인코딩과 키보드 입력 방식을 지역에 맞게 설정합니다.
로케일의 구성 요소
로케일은 일반적으로 아래와 같은 형식으로 구성됩니다:
language[_territory][.codeset][@modifier]
예를 들어, en_US.UTF-8 로케일은 다음과 같은 의미를 가집니다:
- en: 언어 (English, 영어)
- US: 지역 또는 국가 (United States, 미국)
- UTF-8: 문자 인코딩 (UTF-8)
- @modifier: 추가적인 수정자가 있을 수 있습니다 (예: @euro).
반응형