[C++] strncmp(), 문자열 비교

By JS | Last updated: December 01, 2021

C++에서 strncmp() 함수를 이용하여 두개의 문자열을 비교할 수 있습니다. 즉, 두개의 문자열이 같은지, 어떤 문자열이 더 큰지 비교할 수 있습니다. 문자열 크기는 각 문자열의 ASCII 값을 비교하여 크다, 작다를 판단합니다.

1. Syntax

인자로 전달된 문자열 s1과 s2를 비교하며, 최대 count 크기만큼의 문자열만 비교합니다. count가 5라면 최대 5개의 문자들만 비교합니다.

int strncmp(const char* s1, const char* s2, size_t count);

문자열 비교 후, 리턴되는 값은 다음과 같습니다.

  • s1과 s2가 같을 때 0을 리턴
  • s1이 s2보다 클 때 양수 리턴
  • s1이 s2보다 작을 때 음수 리턴

2. Example 1

다음은 HelloHell을 비교하는 예제입니다. count가 5이기 때문에 최대 5개의 문자만 비교합니다. 인자로 전달되는 두개의 문자열의 길이가 달라도 됩니다.

#include <iostream>

using namespace std;

int main()
{
    char s1[] = "Hello";
    char s2[] = "Hell";

    int result= strncmp(s1, s2, 5);

    if (result == 0)
        cout << "s1 = s2";
    else if (result > 0)
        cout << "s1 > s2";
    else if (result < 0)
        cout << "s1 < s2";
}

s1과 s1 비교 시, Hell은 동일하고 5번째 문자 비교 시, s1은 o이고 s2는 문자가 없기 때문에 s1이 더 크다고 판단되어 양수가 리턴됩니다.

s1 > s2

3. Example 2

s1과 s2가 동일한 문자열이면 0을 리턴합니다.

#include <iostream>

using namespace std;

int main()
{
    char s1[] = "Hello";
    char s2[] = "Hello";

    int result= strncmp(s1, s2, 5);

    if (result == 0)
        cout << "s1 = s2";
    else if (result > 0)
        cout << "s1 > s2";
    else if (result < 0)
        cout << "s1 < s2";
}

Output:

s1 = s2

4. Example 3

HelloHolly 비교 시, 두번째 문자에서 oe보다 더 큰 ASCII 값을 갖고 있기 때문에 두번째 인자 s2가 더 크다고 판단되어 음수가 리턴됩니다.

#include <iostream>

using namespace std;

int main()
{
    char s1[] = "Hello";
    char s2[] = "Holly";

    int result= strncmp(s1, s2, 5);

    if (result == 0)
        cout << "s1 = s2";
    else if (result > 0)
        cout << "s1 > s2";
    else if (result < 0)
        cout << "s1 < s2";
}

Output:

s1 < s2

References

댓글을 보거나 쓰려면 이 버튼을 눌러주세요.
codechachaCopyright ©2019 codechacha