memcmp 함수 구현하기

윤효준·2024년 8월 3일
0

42 Libft 복습

목록 보기
17/28

memcmp 함수의 manual은 다음과 같다!

Synopsis

#include <string.h>

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

Description

  • memcmp함수는 바이트 문자열 s1을 바이트 문자열 s2와 비교한다.(바이트라고 했으므로 전에 설명했다시피 unsigned char로 비교하는 것을 유추할 수 있다)

  • 두 문자열 모두 n 바이트 길이로 간주한다.

Return Values

  • 0: 두 문자열이 동일한 경우

  • 양수: s1에서 첫 번째로 다른 바이트가 s2의 해당 바이트보다 클 경우

  • 음수: s1에서 첫 번째로 다른 바이트가 s2의 해당 바이트보다 작을 경우

  • 길이가 0인 문자열은 항상 동일한 것으로 간주한다.

구현

int	ft_memcmp(const void *s1, const void *s2, size_t n)
{
	unsigned char	*u1;
	unsigned char	*u2;

	u1 = (unsigned char *) s1;
	u2 = (unsigned char *) s2;
	while (0 < n)
	{
		if (*u1 != *u2)
			return (*u1 - *u2); //unsigned char의 뺄셈 결과는 기본적으로 int로 확장되어 형변환을 할 필요가 없다
		u1++;
		u2++;
		n--;
	}
	return (0);
}
profile
작은 문제를 하나하나 해결하며, 누군가의 하루에 선물이 되는 코드를 작성해 갑니다.

0개의 댓글