memcmp는 두 메모리 블록을 비교하여 그 차이를 반환하는 함수입니다. 주로 데이터 일치 여부를 확인하거나 메모리 내 특정 패턴을 찾는 데 사용됩니다.
int memcmp(const void *ptr1, const void *ptr2, size_t num);
ptr1 & ptr2 : 비교하고자 하는 두 메모리 블록의 포인터입니다.
num : 비교할 바이트 수 입니다.
반환값 : 두 메모리 블록이 같으면 0, ptr1이 ptr2보다 크면 양수, 작으면 음수를 반환합니다.
사용 예시
#include <stdio.h>
#include <string.h>
int main() {
char data1[] = "Hello, World!";
char data2[] = "Hello, C!";
int result = memcmp(data1, data2, 5);
if (result == 0) {
printf("앞의 5바이트는 동일합니다.\n");
} else {
printf("앞의 5바이트가 다릅니다.\n");
}
return 0;
}
주의할 점
부호 없는 타입 : memcmp는 usigned char로 데이터를 해석하며 음수 값은 양수로 변환됩니다.
따라서 부호가 있는 데이터와 비교할 때 예상과 다른 결과가 나올 수 있습니다.
바이트 단위로 처리: memcmp는 바이트 단위로 처리하기 때문에 바이트 보다 큰 수를 비교한다면 예상치 못한 결과를 얻을 수 있습니다.
댓글