728x90
반응형

ft_strlen: 문자열의 길이를 반환해주는 함수

size_t	ft_strlen(const char *s)
{
	size_t	i;

	i = 0;
	while (s[i])
		i++;
	return (i);
}

 

ft_strmapi: 문자열 s의 각 인덱스에 담긴 값에 함수 f를 적용한 결과를 반환해주는 함수

함수를 파라미터로 받는 함수이다. 

char	*ft_strmapi(char const *s, char (*f)(unsigned int, char))
{
	int		i;
	int		len;
	char	*str;

	i = 0;
	if (s == 0 || f == 0)
		return (NULL);
	len = (int)ft_strlen(s);
	if (!(str = (char *)malloc(sizeof(char) * (len + 1))))
		return (NULL);
	while (i < len)
	{
		str[i] = f(i, s[i]);
		i++;
	}
	str[i] = '\0';
	return (str);
}

 

ft_strncmp: 두 문자열 s1, s2를 n만큼 비교하여 그 차이를 반환해주는 함수

문자열 s1과 문자열 s2을 첫 인덱스부터 순서대로 비교하는데

s1과 s2가 끝까지 같다면 0을 반환하고, 같지 않다며 해당 위치의 s1 - s2 값을 반환해주면 된다.

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

	i = 0;
	while (s1[i] && s2[i] && i < n - 1 && s1[i] == s2[i])
		i++;
	if (n == 0)
		return (0);
	return ((unsigned char)s1[i] - (unsigned char)s2[i]);
}

 

ft_strnstr: 문자열 big에서 문자열 little과 일치하는 문자열의 위치를 반환해주는 함수

문자열 big의 첫 인덱스부터 문자열 little의 첫 문자와 같은 문자가 있는지 확인을 한다.

같은 문자가 있다면 반복문을 하나 더 파서 big의 뒷 문자들이 little과 똑같은지 확인을 해주면 된다.

char	*ft_strnstr(const char *big, const char *little, size_t n)
{
	size_t	i;
	size_t	j;
	size_t	little_len;

	i = 0;
	little_len = ft_strlen(little);
	if (!little_len)
		return ((char *)big);
	while (big[i] && i + little_len <= n)
	{
		if (big[i] == little[0])
		{
			j = 0;
			while (big[i + j] && little[j])
			{
				if (big[i + j] != little[j])
					break ;
				else if (j == little_len - 1)
					return ((char *)big + i);
				j++;
			}
		}
		i++;
	}
	return (NULL);
}
728x90
반응형

+ Recent posts