모두의 코드
C 언어 레퍼런스 - strcmp 함수

작성일 : 2010-06-25 이 글은 29215 번 읽혔습니다.

아직 C 언어와 친숙하지 않다면, 씹어먹는 C 언어 강좌를 보는 것이 어떻까요?

strcmp

#include <string.h>  // C++ 에서는 <cstring>

int strcmp(const char* str1, const char* str2);

두 개의 문자열을 비교한다.

C 문자열 형식의 str1str2 를 비교한다.

이 함수는 각 문자열의 첫 번째 문자 부터 비교를 시작한다. 만일 같다면 두 문자가 다를 때 까지나 NULL 에 도달할 때 까지 계속 비교를 수행한다.

인자

str1

비교할 C 형식 문자열

str2

비교할 C 형식 문자열

리턴값

두 문자열의 관계에 따라 정수값을 리턴한다.

만일 두 문자열이 정확하게 일치한다면 0 을 리턴한다.

일치하지 않을 경우, 일치 하지 않는 첫 번째 문자를 비교해 str1str2 보다 크다면 0 보다 큰 값을 아니면 0 보다 작은 값을 리턴한다.

strcmp 함수의 간단한 구현

/*

다음 소스는
http://www.jbox.dk/sanos/source/lib/string.c.html
에서 가져왔습니다.

*/
int strcmp(const char *s1, const char *s2) {
  int ret = 0;
  while (!(ret = *(unsigned char *)s1 - *(unsigned char *)s2) && *s2)
    ++s1, ++s2;

  if (ret < 0)
    ret = -1;
  else if (ret > 0)
    ret = 1;

  return ret;
}

실행 예제

/*

이 예제는
http://www.cplusplus.com/reference/clibrary/cstring/strcmp/
에서 가져왔습니다.

 */
#include <stdio.h>
#include <string.h>

int main() {
  char szKey[] = "apple";
  char szInput[80];
  do {
    printf("Guess my favourite fruit? ");
    scanf("%s", szInput);
  } while (strcmp(szKey, szInput) != 0);

  puts("Correct answer!");
  return 0;
}

실행 결과

참고 자료

  • strncmp : 두 문자열의 일부 문자를 비교한다.

  • memcmp : 두 메모리 블록을 비교한다.

  • strrchr : 문자열에서 특정한 문자가 마지막으로 나타나는 위치를 찾는다.

  • strspn : 특정한 문자열이 다른 문자열에서 차지하는 길이를 계산한다.

첫 댓글을 달아주세요!
프로필 사진 없음
강좌에 관련 없이 궁금한 내용은 여기를 사용해주세요

    댓글을 불러오는 중입니다..