본문 바로가기
코드리뷰/C언어 리뷰

실전 C언어 코딩 리뷰 - 문자열 비교하기(strcmp vs strncmp)

by 디마드 2020. 9. 30.

자바나 C#계열 언어와 C언어의 가장 큰 차이점은 문자열 처리 방식이다. 처음 C를 접할 때 가장 이해하기 어려운 부분이기도 하다. C언어에서 문자열은 숫자를 비교하듯 변수 그 자체로 비교할 수 없다. 기본 함수인 strcmp()나 strncmp() 함수를 이용해야 한다. 

헤더 파일 : string.h

#include <string.h> 

// str1, str2 : 비교 문자열
int strcmp(const char* str1, const char* str2);

포인터로 받는 두 개의 문자 str1과 str2를 비교한다. 각 문자열의 첫 번째부터 비교해서 두 문자가 다르거나, NULL을 만날 때까지 비교한다. 

[비교 결과 ]

▶ 일치 : 0 

불일치 : 0이 아닌 값 (str1이 크면 0보다 큰 값, 작으면 0보다 작은 값 리턴)

실전 예제 : strcmp()

[샘플코드]

#include <stdio.h>
#include <string.h>    // strcmp 헤더 파일

int main()
{
    char str1[10] = "Hello";
    char *str2 = "Hello";

    int ret = strcmp(str1, str2); // 두 문자열 비교

    printf("%d\n", ret);          // 비교 결과 출력

    return 0;
}

[실행결과]

0

 

 

헤더 파일 : string.h

#include <string.h> 

// str1, str2 : 비교 문자열
// num : 비교할 최대 문자수
int strncmp(const char* str1, const char* str2, size_t num);

두 문자열의 지정된 길이만큼 문자들을 비교한다.

첫 문자부터 비교하여 다른 문자가 나타나거나 NULL에 도달하거나, 지정된 길이만큼 비교한다. 

[비교 결과 ]

▶ 일치 : 0 

 불일치 : 0이 아닌 값 (str1이 크면 0보다 큰 값, 작으면 0보다 작은 값 리턴)

실전 예제 : strncmp()

[샘플코드]

#include <stdio.h>
#include <string.h>    // strcmp 헤더 파일

int main()
{
    char str1[10] = "Hello";
    char *str2 = "Hello";

    int ret = strncmp(str1, str2, sizeof(str1)); // 두 문자열 비교
    
    printf("%d\n", ret);          // 비교 결과 출력

    return 0;
}

[실행결과]

0

 

 

반응형

댓글