ft_strncmp

hni1124·2022년 1월 24일
0

함수 원형

int ft_strncmp(const char str1, const char str2, size_t num)

용도 : 문자열 비교, num만큼 (str1에서의)

리턴 값 :
아예 같으면 0
다르면 다른 부분에서의 문자열 차이 chr1 - chr2

문자열의 주소이지만 문자 하나하나는 아스키코드내 127이내의 문자라는 보장이 없다. 따라서 unsigned char로 해야함.
ex : \200

memcmp와 차이가 있다면 와일 조건에서 mem은 메모리라 \0을 만나도 계속 진행한다.

구현부

#include "libft.h"

int	ft_strncmp(const char *str1, const char *str2, size_t num)
{
	size_t				i;
	const unsigned char	*st1;
	const unsigned char	*st2;

	i = 0;
	st1 = (const unsigned char *) str1;
	st2 = (const unsigned char *) str2;
	while ((i < num) && ((*st1 != '\0') || (*st2 != '\0')))
	{
		if (*st1 == *st2)
		{
			st1++;
			st2++;
			i++;
		}
		else
		{
			return (*st1 - *st2);
		}
	}
	return (0);
}
profile
42Seoul / 알고리즘 공부 중

0개의 댓글