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

C 언어 strcmp() 함수 완벽 가이드: 문자열 비교의 기본 원리와 활용법

C 표준 라이브러리의 int strcmp(const char *str1, const char *str2) 함수는 str1이 가리키는 문자열과 str2가 가리키는 문자열을 서로 비교하는 역할을 합니다.

여기서 문자 배열을 흔히 '문자열(string)'이라고 부릅니다.

문자열 선언 방법

문자열은 다음과 같이 선언합니다.

char stringname [size];

예를 들어, char string[50];과 같이 선언하면 최대 50자 길이의 문자열을 저장할 수 있습니다.

문자열 초기화

문자열을 초기화하는 방법에는 두 가지가 있습니다.

1. 개별 문자 상수 사용

char string[10] = { 'H', 'e', 'l', 'l', 'o', '\0' };

2. 문자열 상수 사용

char string[10] = "Hello";

접근(Accessing) — 제어 문자 "%s"를 사용하면 널 종료 문자('\0')를 만날 때까지 문자열 전체를 읽거나 출력할 수 있습니다.

strcmp() 함수란?

  • 두 개의 문자열을 서로 비교하는 함수입니다.

  • 비교 결과로 두 문자열에서 처음으로 일치하지 않는 문자 쌍의 ASCII 코드 차이값을 반환합니다.

문자열 비교 규칙

함수의 기본 문법은 다음과 같습니다.

int strcmp (string1, string2);

반환되는 차이값에 따라 비교 결과를 판단할 수 있습니다.

  • 차이값이 0인 경우 → string1 = string2 (두 문자열이 동일)

  • 차이값이 양수인 경우 → string1 > string2 (첫 번째 문자열이 더 큼)

  • 차이값이 음수인 경우 → string1 < string2 (첫 번째 문자열이 더 작음)

예제 프로그램 1

다음 프로그램은 strcmp() 함수의 기본적인 사용법을 보여줍니다.

#include<stdio.h>
main ( ){
    char a[50], b [50];
    int d;
    printf ("enter 2 strings:\n");
    scanf ("%s %s", a,b);
    d = strcmp (a,b);
    if (d==0)
       printf("%s is equal to %s", a,b);
    else if (d>0)
       printf("%s is greater than %s",a,b);
    else if (d<0)
       printf("%s is less than %s", a,b);
}

실행 결과

위 프로그램을 실행하면 다음과 같은 결과가 출력됩니다.

enter 2 strings:
bhanu
priya
bhanu is less than priya

예제 프로그램 2

이번에는 string.h 헤더 파일을 포함하여 strcmp 라이브러리 함수로 두 문자열을 비교하는 C 프로그램을 살펴보겠습니다.

#include<stdio.h>
#include<string.h>
void main(){
    //두 개의 문자열 선언//
    char string1[25],string2[25];
    int value;
    //문자열 1과 문자열 2 입력//
    printf("Enter String 1: ");
    gets(string1);
    printf("Enter String 2: ");
    gets(string2);
    //라이브러리 함수로 비교//
    value = strcmp(string1,string2);
    //조건문 처리//
    if(value==0){
       printf("%s is same as %s",string1,string2);
    }
    else if(value>0){
       printf("%s is greater than %s",string1,string2);
    }
    else{
       printf("%s is less than %s",string1,string2);
    }
}

실행 결과

위 프로그램을 실행하면 다음과 같은 결과가 출력됩니다.

Enter String 1: Tutorials
Enter String 2: Point
Tutorials is greater than Point

정리

strcmp() 함수는 사전 순(lexicographical order)을 기준으로 두 문자열을 비교하며, 반환값의 부호를 통해 어느 문자열이 더 큰지 판단할 수 있습니다. 문자열 검색, 정렬, 입력값 검증 등 다양한 프로그래밍 상황에서 유용하게 활용되는 필수 함수이므로, 반환값의 의미를 정확히 이해하고 사용하는 것이 중요합니다.