📌ft_strnstr
문자열 내에서 부분문자열을 탐색하는 함수
char *ft_strnstr(const char *str, const char *to_find, size_t n);
➕ 매개변수 (Parameters)
str
: 문자열을 검색할 대상to_find
: 검색할 문자열n
: str의 n번째 문자까지만 확인
➕ 반환값 (Return)
char *
: 문자열이 존재하면 해당 문자열이 존재하는 곳의 포인터를 반환, 존재하지 않으면 NULL 반환
➕ 설명 (Description)
➕ 코드 (Code)
#include "libft.h"
int find_str(const char *str, const char *to_find, int n)
{
str += n;
while (*to_find)
{
if (*str != *to_find)
return (0);
str++;
to_find++;
}
return (1);
}
char *ft_strnstr(const char *str, const char *to_find, size_t n)
{
size_t i;
i = 0;
if (!*to_find)
return ((char *)str);
if (!n)
return (0);
if (!*str)
return (0);
while ((str[i] != 0) && (i <= (n - ft_strlen(to_find))))
{
if (find_str(str, to_find, i) == 1)
return ((char *)str + i);
i++;
}
return (0);
}
📌ft_strncmp
두 문자열을 n까지 비교
int ft_strncmp(const char *str1, const char *str2, size_t n);
➕ 매개변수 (Parameters)
str1
: 비교할 첫번째 문자열str2
: 비교할 두번째 문자열n
: str1과 str2의 n번째 문자까지만 비교
➕ 반환값 (Return)
int
: str2가 str1보다 큰 경우 음수 / 작은 경우 양수 / 동일한 경우 0
➕ 설명 (Description)
➕ 코드 (Code)
#include "libft.h"
int ft_strncmp(const char *str1, const char *str2, size_t n)
{
size_t i = 0;
if (!n)
return (0);
while (str1[i] && str2[i] && str1[i] == str2[i] && i < (n - 1))
i++;
if (str1[i] == str2[i])
return (0);
return ((unsigned char)str1[i] - (unsigned char)str2[i]);
}
반응형
'➰ 코딩 부트캠프 > 42 seoul' 카테고리의 다른 글
[0 Circle] Libft - ft_isalpha, ft_isdigit, ft_isalnum, ft_isascii, ft_isprint, ft_toupper, ft_tolower (0) | 2021.01.04 |
---|---|
[0 Circle] Libft - ft_atoi (0) | 2020.12.24 |
[0 Circle] Libft - ft_strchr, ft_strrchr (0) | 2020.12.24 |
[0 Circle] Libft - ft_strchr, ft_strrchr (0) | 2020.12.23 |
[0 Circle] Libft - ft_strlcpy, ft_strlcat (0) | 2020.12.23 |