열렬히.뛰기

ft_strncmp

école 42 > libft > ft_strncmp

개요

  • 길이 n만큼 문자열 s1과 문자열 s2
  • 두 값의 차이를 뺀다.

구현

  • unsigned char 부호를 이용해서 두 문자의 절댓값을 비교.
  • (unsigned char) 1 - (unsigned char) 5를 할 때, -4가 나올 수 있는가?
    • 가능하다. unsigned char가 가질 수 있는 값이 양수라는 것이지, 계산을 못한다는 것은 아니다.

코드

c
int	ft_strncmp(const char *s1, const char *s2, unsigned int n)
{
	unsigned int	i;

	i = 0;
	while (i < n && (s1[i] != '\0' || s2[i] != '\0'))
	{
		if ((unsigned char) s1[i] != (unsigned char) s2[i])
			return ((unsigned char)s1[i] - (unsigned char)s2[i]);
		i++;
	}
	return (0);
}