함수 원형
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);
}