📌ft_memmove
메모리를 이동하는 함수
void*ft_memmove(void *dest, const void *src, unsigned int len) ;
➕ 매개변수 (Parameters)
dest
: 이동하여 저장할 메모리의 시작 주소src
: 이동하려는 메모리의 시작 주소n
: 이동할 바이트의 수
➕ 반환값 (Return)
void *
: dest의 포인터 반환
➕ 설명 (Description)
memcpy와 같이 메모리의 내용을 다른 메모리로 옮기는 함수이지만 memmove 함수는 이동할 데이터를 임시 버퍼에 옮긴 후 대상 버퍼오 이동하는 과정을 거치기 때문에 두 메모리가 근점해 있더라도 중첩현상이 발생하지 않는 장점이 있다.
➕ 코드 (Code)
#include "libft.h"
void*ft_memmove(void *dest, const void *src, unsigned int len)
{
unsigned inti;
unsigned char*tmp;
unsigned const char *str;
i = -1;
tmp = dest;
str = src;
if (!dest && !src)
return (0);
if (dest < src)
while (++i < len)
tmp[i] = str[i];
else
while (++i < len)
tmp[len - 1 - i] = str[len - 1 - i];
return (dest);
}
📌ft_memchr
메모리 영역에서 임의의 문자를 겸색하다가 발견되면 그 위치의 포인터를 반환
void *ft_memchr(void *ptr, int value, unsigned int num) ;
➕ 매개변수 (Parameters)
ptr
: 검색을 수행할 메모리의 시작 주소value
: 검색할 값 (int 로 값이 전달되지만 함수 내부적으로는 한 바이트씩 비교하기 때문에 이 값은 unsigned char 로 변환되어 사용)num
: 검색을 시작한 부분 부터 검색을 수행할 만큼의 바이트 수
➕ 반환값 (Return)
void *
: 메모리 블록에서 value 와 일치하는 값이 있다면 그 곳의 주소를 리턴하고 값을 찾지 못한다면 NULL 을 리턴
➕ 설명 (Description)
➕ 코드 (Code)
#include "libft.h"
void *ft_memchr(void *ptr, int value, unsigned int num)
{
unsigned int i;
unsigned char *str;
i = -1;
str = ptr;
while (++i < num)
{
if (str[i] == (unsigned char)value)
return (&ptr[i]);
}
return (0);
}
반응형
'➰ 코딩 부트캠프 > 42 seoul' 카테고리의 다른 글
[0 Circle] Libft - ft_strlcpy, ft_strlcat (0) | 2020.12.23 |
---|---|
[0 Circle] Libft - ft_memcmp, ft_strlen (0) | 2020.12.23 |
[0 Circle] Libft - ft_memcpy, ft_memccpy (3) | 2020.12.22 |
[0 Circle] Libft - ft_memset, ft_bzero (0) | 2020.12.22 |
Makefile 만들기 (0) | 2020.12.21 |