Computer >> 컴퓨터 >  >> 프로그래밍 >> C 프로그래밍

C 언어 strxfrm() 함수 완벽 가이드: 문자열 로케일 변환과 예제

strxfrm() 함수는 원본(source) 문자열을 현재 설정된 로케일(locale)에 맞게 변환한 뒤, 변환된 문자열에서 지정한 개수만큼의 문자를 대상(destination) 버퍼로 복사하는 함수입니다. C 표준 라이브러리에서는 <string.h> 헤더 파일에 선언되어 있습니다.

strxfrm() 함수의 문법

size_t strxfrm(char *destination, const char *source, size_t number);

매개변수 설명

  • destination – 변환된 문자들이 복사될 대상 버퍼의 포인터입니다.
  • source – 변환할 원본 문자열입니다.
  • number – 대상 버퍼로 복사할 최대 문자 수입니다.

주의할 점은 반환값이 복사된 문자 수가 아니라 변환된 전체 문자열의 길이(널 종료 문자 제외)라는 것입니다.

strxfrm() 예제 코드

#include <stdio.h>
#include <string.h>

int main() {
    char s[10] = "HelloWorld";
    char d[10];
    int n;

    n = strxfrm(d, s, 5);
    printf("Length of string : %d", n);

    return 0;
}

실행 결과

Length of string : 10

코드 설명

위 프로그램에서는 char형 배열 두 개가 선언되었습니다. 하나는 변환 결과가 저장될 대상 배열 d, 다른 하나는 원본 문자열이 담긴 s입니다.

char s[10] = "HelloWorld";
char d[10];
int n;
n = strxfrm(d, s, 5);

세 번째 인자로 5가 전달되었기 때문에 실제로 d에 복사되는 문자는 앞에서부터 5개뿐입니다. 그러나 반환값은 복사된 문자 수가 아니라 변환된 문자열 전체의 길이이므로, 화면에는 10이 출력됩니다.

참고 사항

strxfrm()은 주로 로케일에 따라 달라지는 문자열 비교를 빠르게 처리하기 위해 사용됩니다. 동일한 문자열을 여러 번 비교해야 하는 경우, 미리 strxfrm()으로 변환해 두면 이후 strcmp()만으로 strcoll()과 동일한 순서의 비교를 수행할 수 있어 성능이 크게 향상됩니다.