C의 문자열 비교

Jinku Hu 2023년10월12일
  1. strcmp 함수를 사용하여 문자열 비교
  2. strncmp 함수를 사용하여 문자열의 특정 부분 만 비교
  3. strcasecmpstrncasecmp 함수를 사용하여 대소 문자를 무시하는 문자열 비교
C의 문자열 비교

이 기사에서는 C에서 문자열을 비교하는 방법에 대한 여러 방법을 소개합니다.

strcmp 함수를 사용하여 문자열 비교

strcmp 함수는<string.h>헤더에 정의 된 표준 라이브러리 기능입니다. C 스타일 문자열은 \0기호로 끝나는 문자 시퀀스 일 뿐이므로 함수는 각 문자를 반복과 비교해야합니다.

strcmp는 두 개의 문자열을 받아서 비교 결과를 나타내는 정수를 반환합니다. 반환되는 숫자는 첫 번째 문자열이 사 전적으로 두 번째 문자열보다 작으면 음수이고, 후자가 전자보다 작 으면 양수, 두 문자열이 동일하면 0입니다.

다음 예제에서는 함수의 반환 값을 반전하고? :조건문에 삽입하여 해당 출력을 콘솔에 인쇄합니다.

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

int main() {
  const char* str1 = "hello there 1";
  const char* str2 = "hello there 2";
  const char* str3 = "Hello there 2";

  !strcmp(str1, str2) ? printf("strings are equal\n")
                      : printf("strings are not equal\n");

  !strcmp(str1, str3) ? printf("strings are equal\n")
                      : printf("strings are not equal\n");

  exit(EXIT_SUCCESS);
}

출력:

strings are not equal
strings are not equal

strncmp 함수를 사용하여 문자열의 특정 부분 만 비교

strncmp<string.h>헤더에 정의 된 또 다른 유용한 함수로, 문자열 시작 부분에서 여러 문자 만 비교하는 데 활용할 수 있습니다.

strncmp는 정수 유형의 세 번째 인수를 사용하여 두 문자열에서 비교할 문자 수를 지정합니다. 함수의 반환 값은strcmp가 반환하는 값과 유사합니다.

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

int main() {
  const char* str1 = "hello there 1";
  const char* str2 = "hello there 2";

  !strncmp(str1, str2, 5) ? printf("strings are equal\n")
                          : printf("strings are not equal\n");

  exit(EXIT_SUCCESS);
}

출력:

strings are equal

strcasecmpstrncasecmp 함수를 사용하여 대소 문자를 무시하는 문자열 비교

strcasecmp 함수는 대소 문자를 무시한다는 점을 제외하면strcmp 함수와 유사하게 작동합니다. 이 함수는 POSIX와 호환되며 strncasecmp와 함께 여러 운영 체제에서 사용할 수 있습니다.이 기능은 두 문자열의 특정 문자 수에 대해 대소 문자를 구분하지 않는 비교를 구현합니다. 후자의 매개 변수는 size_t유형의 세 번째 인수를 사용하여 함수에 전달할 수 있습니다.

이러한 함수의 반환 값은 조건문에서 직접 사용할 수 있습니다.

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

int main() {
  const char* str1 = "hello there 2";
  const char* str3 = "Hello there 2";

  !strcasecmp(str1, str3) ? printf("strings are equal\n")
                          : printf("strings are not equal\n");

  !strncasecmp(str1, str3, 5) ? printf("strings are equal\n")
                              : printf("strings are not equal\n");

  exit(EXIT_SUCCESS);
}

출력:

strings are equal
strings are equal
작가: Jinku Hu
Jinku Hu avatar Jinku Hu avatar

Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.

LinkedIn Facebook

관련 문장 - C String