libft/42

Libft Part1 (2/2)

dev.tkim42 2021. 2. 9. 23:03

13. strnstr

함수이름

- ft_strnstr

 

프로토타입

- char *ft_strnstr(const char *big, const char *little, size_t len)

 

매개변수

-const char *big : 전체 문자열

-const char *little : 문자열 big에서 찾을 문자열

-size_t len :  검색할 범위

 

리턴값

- 문자열 little값이 없다면 big 리턴

- big문자열 내에서 문자열 little을 찾지 못했다면 NULL 리턴

- little문자열을 찾으면 찾은 시작주소 리턴

 

설명

- big 문자열에서 little문자열을 len 사이즈 만큼 찾는다.

#include "libft.h"

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

	i = 0;
	j = 0;
	little_len = ft_strlen(little);
	if (*little == '\0')
		return ((char *)big);
	while (big[i] && len-- >= little_len)
	{
		j = 0;
		while (big[i + j] == little[j] && little[j])
		{
			j++;
			if (little[j] == '\0')
				return ((char *)(big + i));
		}
		i++;
	}
	return (NULL);
}

14. strncmp

함수이름

- ft_strncmp

 

프로토타입

- int ft_strncmp(const char *s1, const char *s2, size_t n)

 

매개변수

-const char *s1 : 대상 문자열

-const char *s2 : 대상 문자열

-size_t n : 비교할 문자 개수

 

리턴값

- s1 > s2 : 양수

- s1 < s2 : 음수

- s1 == s2 : 0

 

설명

- 문자열 s1과 문자열 s2를 n개만큼 비교한다. 

#include "libft.h"

int		ft_strncmp(const char *s1, const char *s2, size_t n)
{
	size_t			len;
	unsigned char	*ss1;
	unsigned char	*ss2;

	len = 0;
	ss1 = (unsigned char *)s1;
	ss2 = (unsigned char *)s2;
	while ((ss1[len] || ss2[len]) && len < n)
	{
		if (ss1[len] > ss2[len])
			return (ss1[len] - ss2[len]);
		else if (ss1[len] < ss2[len])
			return (ss1[len] - ss2[len]);
		len++;
	}
	return (0);
}

 

15. atoi

함수이름

- ft_atoi

 

프로토타입

- int ft_atoi(char *str)

 

매개변수

- char *str : 변환할 문자열

 

리턴값

-  변환된 정수

 

설명

- 문자열을 정수로 변환해준다

#include "libft.h"

int		is_whitespace(char c)
{
	if (c == ' ' || c == '\n' || c == '\t' || c == '\v'
			|| c == '\f' || c == '\r')
		return (1);
	else
		return (0);
}

int		is_operator(char c)
{
	if (c == '+' || c == '-')
		return (1);
	else
		return (0);
}

int		ft_atoi(char *str)
{
	size_t	n;
	int		minus;
	int		i;

	n = 0;
	minus = 1;
	i = 0;
	while (str[i] && is_whitespace(str[i]))
		i++;
	if (str[i] == '-')
		minus *= -1;
	if (is_operator(str[i]))
		i++;
	while (str[i] && ft_isdigit(str[i]))
	{
		n *= 10;
		n += (str[i] - '0');
		i++;
	}
	return (n * minus);
}

 

16. isalpha

함수이름

- ft_isalpha

 

프로토타입

- int ft_isalpha(int c)

 

매개변수

-int c :  문자 하나

 

리턴값

-  매개변수 c 가 알파벳이면 1을, 아니라면 0을 리턴

 

설명

- 해당 문자가 알파벳인지 확인하는 함수

int		ft_isalpha(int c)
{
	if ((c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z'))
		return (1);
	else
		return (0);
}

17. isdigit

함수이름

- ft_isdigit

 

프로토타입

- int ft_isdigit(int c)

 

매개변수

-int c :  문자 하나

 

리턴값

- 들어온 값이 숫자면 1 , 아니면 0을 리턴

 

설명

- 해당 값이 숫자인지 확인하는 함수

int		ft_isdigit(int c)
{
	if (c >= '0' && c <= '9')
		return (1);
	else
		return (0);
}

18. isalnum

함수이름

- ft_isalnum

 

프로토타입

- int ft_isalnum(int c)

 

매개변수

-int c :  문자 하나

 

리턴값

- 들어온 값이 알파벳이거나 숫자면 1, 아니라면 0을 리턴

 

설명

- 해당 값이 알파벳이거나 숫자인지 확인하는 함수

 

19. isascii

함수이름

- ft_isascii

 

프로토타입

- int ft_isascii(int c)

 

매개변수

-int c : 문자 하나

 

리턴값

- 들어온 값이 아스키코드면 1 , 아니라면 0을 리턴

 

설명

- 해당 값이 아스키코드인지 확인하는 함수

int		ft_isascii(int c)
{
	if (c >= 0 && c <= 127)
		return (1);
	else
		return (0);
}

 

20. isprint

함수이름

- ft_isprint

 

프로토타입

- int ft_isprint(int c)

 

매개변수

-int c : 문자 하나

 

리턴값

- 들어온 값이 출력가능한 값이면 1, 아니면 0을 리턴

 

설명

- 해당 값이 출력가능한 문자인지 확인하는 함수

int		ft_isprint(int c)
{
	if (c >= 32 && c < 127)
		return (1);
	else
		return (0);
}

21. toupper

함수이름

- ft_toupper

 

프로토타입

- int ft_toupper(int c)

 

매개변수

-int c : 문자 하나

 

리턴값

- 들어온 값이 소문자이면 대문자로 치환해준다.

 

설명

- 대문자로 치환해주는 함수

#include "libft.h"

int		ft_toupper(int c)
{
	if (c >= 'a' && c <= 'z')
		return (c - 32);
	else
		return (c);
}

22. tolower

함수이름

- ft_tolower

 

프로토타입

- int ft_tolower(int c)

 

매개변수

-int c : 문자 하나

 

리턴값

- 들어온 값이 대문자이면 소문자로 치환해준다.

 

설명

- 소문자로 치환해주는 함수

#include "libft.h"

int		ft_tolower(int c)
{
	if (c >= 'A' && c <= 'Z')
		return (c + 32);
	else
		return (c);
}

23. calloc

함수이름

- ft_calloc

 

프로토타입

- void *ft_calloc(size_t count, size_t size)

 

매개변수

- size_t count : malloc할  크기

- size_t size :  mallocgkf byte 크기

 

리턴값

- void *  :  0을 초기화한 주소반환

 

설명

- size 크기의 변수를 count 개수만큼 malloc 해주고 값을 0으로 초기화 해주는 함수

malloc과 다르점은 메로리공간을 할당하고 0으로 값을 초기화해준다.

#include "libft.h"

void	*ft_calloc(size_t count, size_t size)
{
	char *tmp;

	if (!(tmp = (char *)malloc(size * count)))
		return (NULL);
	ft_memset(tmp, 0, size * count);
	return (tmp);
}

24. strdup

함수이름

- ft_strdup

 

프로토타입

- void *ft_strdup(const char *s)

 

매개변수

-const char *s : 복사할 문자열

 

리턴값

- char * : 복사한 문자열의 주소 반환

 

설명

- 문자열 s + 1개(널값) 만큼 동적할당 한 후 문자열 s를 복사하는 함수

- 내부적으로 malloc함수를 사용하므로 반환받은 메모리는 free함수를 이용해 메모리를 해제해줘야 한다.

 

#include "libft.h"

char	*ft_strdup(const char *s)
{
	int		s_len;
	char	*tmp;
	int		i;

	i = 0;
	s_len = ft_strlen(s);
	if (!((tmp = (char *)malloc(sizeof(char) * (s_len + 1)))))
		return (NULL);
	while (i < s_len)
	{
		tmp[i] = s[i];
		++i;
	}
	tmp[i] = '\0';
	return (tmp);
}