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

작성일 : 2010-06-25
아직 C 언어와 친숙하지 않다면, 씹어먹는 C 언어 강좌를 보는 것이 어떻까요?

memcmp

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

int memcmp ( const void * ptr1, const void * ptr2, size_t num );

두 개의 메모리 블록을 비교한다.

ptr1 이 가리키는 처음 num 바이트의 데이터와 ptr2 가 가리키는 처음 num 바이트의 데이터를 비교하여 이들이 같다면 0 을 리턴하고 다르다면 0 이 아닌 값을 리턴한다. 이 때 리턴되는 값은 아래를 참고.

 인자

ptr1

메모리 블록을 가리키는 포인터

ptr2

메모리 블록을 가리키는 포인터

num

비교할 바이트 수

 리턴값

두 개의 메모리 블록의 관계에 따라 아래와 같이 정수 값을 리턴한다.

 실행 예제

/*

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

참고로 아래의 예제는 단어를 순서대로 배열하는데 요긴하게 이용될 수 있습니다.
(예: 사전)

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

int main() {
  char str1[256];
  char str2[256];
  int n;
  size_t len1, len2;

  printf("Enter a sentence: ");
  gets(str1);

  printf("Enter another sentence: ");
  gets(str2);

  len1 = strlen(str1);
  len2 = strlen(str2);

  n = memcmp(str1, str2, len1 > len2 ? len1 : len2);

  if (n > 0) {
    printf("'%s' is greater than '%s'.\n", str1, str2);
  } else if (n < 0) {
    printf("'%s' is less than '%s'.\n", str1, str2);
  } else {
    printf("'%s' is the same as '%s'.\n", str1, str2);
  }
  return 0;
}

실행 결과

위에서 abcdeadecd 를 입력하였을 때, abcdeadecd 보다 작게 나온다. 이는 memcmp 가 앞에서 부터 처음으로 다른 바이트 (abcde 의 경우 두 번째인 'b', adecd 에서는 두 번째인 'd' ) 를 비교하는데 'b' 가 'd' 보다 아스키 코드 값이 작으므로 0 보다 작은 값이 리턴된다.

 연관된 함수

프로필 사진 없음
댓글에 글쓴이에게 큰 힘이 됩니다