✅memcmp
- The memcmp() function compares the first
n
bytes (each interpreted as unsigned char) of the memory areas s1
and s2
.
s1
와 s2
두 메모리를 n
바이트 만큼 비교.
💾함수 원형
int memcmp(const void *s1, const void *s2, size_t n);
💻Parameters
s1
, s2
: 비교할 메모리 블럭
n
: 비교할 바이트 수
💻Return value
- s1 == s2 :
0
- s1 > s2 :
양수
- s1 < s2 :
음수
💾함수 구현
#include "libft.h"
int ft_memcmp(const void* s1, const void* s2, size_t n)
{
unsigned char* a1;
unsigned char* a2;
size_t i;
a1 = (unsigned char *)s1;
a2 = (unsigned char *)s2;
i = 0;
while (i < n)
{
if (a1[i] != a2[i])
return (a1[i] - a2[i]);
i++;
}
return (0);
}
💾사용 예시
#include <stdio.h>
int main(void)
{
char s1[] = "42cadet";
char s2[] = "42cadetabc";
printf("%d\n", ft_memcmp(s1, s2, 3));
printf("%d\n", ft_memcmp(s1, s2, 8));
return (0);
}
💡memcmp
와 strncmp
strncmp
는 s1
과 s2
모두 Null
이 나오면 카운트와 관계없이 종료.
memcmp
는 s1
과 s2
가 Null
이 나오더라도 상관없이 n
개까지 비교를 계속함.
- 따라서 문자열을 비교 할 때에는
strncmp
, 문자열이 아닌 경우에는 memcmp
를 사용하여 비교.