ft_memcmp

ft_memcmp

“ft_memcmp에 대하여”

<목차>

1. MY CODES

2. MAN MEMCMP

memcmp — compare memory areas

(1) MY CODES

#include "libft.h"

int	ft_memcmp(const void *s1, const void *s2, size_t n)
{
	unsigned char	*p1;
	unsigned char	*p2;
	size_t			i;

	p1 = (unsigned char *)s1;
	p2 = (unsigned char *)s2;
	i = 0;
	while (i < n)
	{
		if (p1[i] != p2[i])
			return (p1[i] - p2[i]);
		i++;
	}
	return (0);
}
  • 주어진 메모리 영역 s1과 s2에 대해 n bytes 만큼을 비교한다(메모리 영역은 unsigned char로 치환된다).

(2) MAN MEMCMP

SYNOPSIS
	#include <string.h>

       int memcmp(const void *s1, const void *s2, size_t n);

DESCRIPTION
    The memcmp() function compares the first n bytes (each interpreted as unsigned char)
	of the memory areas s1 and s2.

RETURN VALUE
	The memcmp() function returns an integer less than, equal to, or greater than zero
	if the first n bytes of s1 is found, respectively, to be less than, to match, 
	or be greater than the first n bytes of s2.

	For a non zero return value, the sign is determined by the sign of the difference 
	between the first pair of bytes (interpreted as unsigned char) that differ in s1 and s2.

	If n is zero, the return value is zero.
  • 반환값은 0보다 큰 정수이거나, 0이거나, 0보다 작은 정수이다.
  • 만약 두 메모리 영역이 완전히 동일하다면 0을 반환한다. n bytes를 확인하는 과정에서 s1의 바이트가 s2의 바이트보다 크다면 0보다 큰 정수를 반환하고, 그 반대라면 0보다 작은 정수를 반환한다. 코드에서는 p1[n] - p2[n]을 반환하는데, p1[n]이 p2[n]보다 크다면 양수가 반환되고 반대라면 음수가 반환될테니 적절한 값을 반환한다고 볼 수 있다.