본문 바로가기
프로그래밍언어/C언어[초급]

[C언어][초급] Chapter49. 문자열 함수 – strcmp 함수로 문자열 비교하기

by about_IT 2025. 4. 19.

프로그래밍에서는 두 문자열이 같은지 비교해야 할 때가 자주 있습니다.
예를 들어 아이디가 "admin"인지 확인하거나, "yes" 또는 "no" 같은 선택지를 검사할 때 말이죠.

C언어에서는 문자열을 단순히 a == b 처럼 비교할 수 없습니다.
그 대신 strcmp 함수를 사용해야 합니다.


● strcmp 함수 사용법

#include <string.h>

strcmp(문자열1, 문자열2);

두 문자열이 같으면 0을 반환하고,
다르면 음수 또는 양수를 반환합니다.


● 예시 코드

char a[] = "apple";
char b[] = "apple";

if (strcmp(a, b) == 0) {
    printf("같습니다!\n");
}

두 문자열이 완전히 같기 때문에 strcmp 결과는 0이 됩니다.


● 비교 결과 해석

  • 0: 두 문자열이 같다
  • < 0: 문자열1 < 문자열2
  • > 0: 문자열1 > 문자열2

문자의 아스키 코드 값을 기준으로 비교하므로, 대소문자도 구분합니다.


● 주의할 점

  • 단순히 a == b처럼 비교하면 주소 비교이므로 잘못된 결과가 나옵니다.
  • 대소문자를 무시하고 비교하려면 strcasecmp (또는 stricmp) 같은 함수를 사용해야 합니다.

strcmp는 문자열이 정확히 일치하는지를 검사할 때 필수적으로 사용됩니다.
로그인, 조건 분기, 메뉴 선택 등 다양한 상황에서 자주 활용되니 꼭 익혀두세요.


● 실습 문제

문제 1

"apple"과 "apple"을 비교했을 때의 strcmp 결과는?

 

문제 2

"cat"과 "dog"를 비교하면 어떤 값이 반환되나요?

 

문제 3

사용자로부터 입력받은 문자열이 "admin"인지 확인하는 코드를 작성하세요.

 

문제 4

strcmp를 사용하지 않고 문자열을 == 연산자로 비교하면 어떤 문제가 생기나요?

 

문제 5

"Zoo"와 "apple" 중 어떤 문자열이 더 앞서는지 비교해보세요.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

▶ 정답 확인하기

정답 1

0 (같은 문자열이므로)

 

정답 2

음수 (c는 d보다 아스키 코드가 작으므로)

 

정답 3

char input[20];
scanf("%s", input);

if (strcmp(input, "admin") == 0) {
    printf("관리자 로그인입니다.\n");
}

 

정답 4

== 연산자는 문자열의 내용을 비교하지 않고, 주소(메모리 위치)를 비교하기 때문에 예상한 결과가 나오지 않습니다.

 

정답 5

"Zoo"가 더 앞에 있는 것으로 나올 수 있지만, 실제로는 아스키 코드 기준으로 소문자가 대문자보다 큽니다.
따라서 strcmp("Zoo", "apple")는 음수를 반환하며 "Zoo"가 더 작다고 판단됩니다.