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
반응형