본문 바로가기

C/C++/[C] 함수

[C 함수] 문자열 비교 함수. strcmp, strncmp

반응형

C 함수.

strcmp, strncmp 함수의 기능을 알아보자 !!


strcmp, strncmp 함수는 모두 두개의 문자열을 서로 비교해주는 기능을 합니다.

두 문자열의 비교를 통해 같다, 다르다 를 알수있고 어떤 문자열이 더 크고작은지도 알 수 있습니다.

( 여기서 말하는 문자열이 크다/작다고 표현하는건 아스키코드값의 우열을 말합니다. )



간단한 예제를 통해 사용 방법을 알아볼게요 ~ !


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

void print_result(int result)
{
    // 결과값이 0 이라면 두 문자열이 같다는 결과코드 입니다.
    if(result == 0)
        printf("같다.\n");
    // 결과값이 0 보다 큰 경우엔 좌측의 문자열이 더 크다는 뜻 입니다.
    else if(result > 0)
        printf("좌측이 더 크다.\n");
    // 결과값이 0 보다 작은 경우엔 우측의 문자열이 더 크다는 뜻 입니다.
    else    // result < 0
        printf("우측이 더 크다.\n");
}

int main()
{
    int result = 0;

    // 동일한 문자열 비교.
    result = strcmp("TEST STRING", "TEST STRING");
    // 비교하고자 하는 문자열 두개를 전달하면 끝.
    print_result(result);

    // 아스키코드의 합산이 우측 문자열이 더 큰 경우 비교.
    result = strcmp("TEST STRING", "tEST STRING");
    print_result(result);

    // 아스키코드의 합산이 좌측 문자열이 더 큰 경우 비교.
    result = strcmp("tEST STRING", "TEST STRING");
    print_result(result);

    // 앞 4자리가 동일한 문자열 비교.
    result = strncmp("TEST 111", "TEST 222", 4);
    /* 비교할 문자열을 인자값으로 사용하는 strcmp 함수와 다르게,
    strncmp 함수는 주소지의 첫번째 주소부터 3번째 인자값으로 전달해준
    값의 길이만큼만 검사를해서 위와 같이 4를 보냈을 경우 0번 주소지부터 3번 주소지 까지
    총 4자리의 주소지만을 비교해서 결과값을 돌려줍니다.
    앞 4자리가 "TEST" 이니 동일한 문자열이라는 결과가 나오겠죠 ? */ 
    print_result(result);

    return 0;
}



결과 화면.


예제 소스에 적어둔 주석이 있으니 다른 설명은 생략 하도록 하겠습니다.

혹시 궁금하신 사항이나 이해가 안가는 부분이 있으시면 언제든지 댓글 주세요 ^^


추가사항 > 예제 소스에선 "TEST STRING" 이런식으로 문자열을 바로 넘겼지만,

char 배열 변수를 통해 넘기는것도 가능하니 참고 하세요 ~ !








반응형