* src를 dstsize만큼 dest에 복사하고 src의 크기를 반환하는 함수.
size_t ft_strlcpy(char *dst, const char *src, size_t dstsize)
char *dst : 복사된 문자열을 넣을 주소
const char *src : 복사할 문자열
size_t dstsize : 복사할 메모리의 크기
dst에 src를 size - 1만큼 복사한 뒤 마지막에 '\0'을 넣는다.
dst가 NULL이면 복사할 공간이 없는 것이므로 0리턴.
src가 NULL이면 src의 길이인 0리턴.
index < dstsize - 1이 아닌 index + 1 < dstsize로 한 이유는 dstsize의 type이 size_t이므로 음수가 불가능하다.
--> 만일 dstsize가 0이라면 -1이 되므로 불가능한 type이다.
#include "libft.h"
size_t ft_strlcpy(char *dst, const char *src, size_t dstsize)
{
size_t index;
size_t size;
index = 0;
size = ft_strlen(src);
if (!dst || !src)//src가 NULL이면 src길이 0리턴, dst가 NULL이면 복사할 공간이 없는 것이니 0리턴
return (0);
if (dstsize == 0)
return (size);
while (src[index] != '\0' && index + 1 < dstsize)//맨 뒤에 '\0'넣어야 하니 index + 1.
{
dst[index] = src[index];
index++;
}
dst[index] = '\0';
return (size);
}
(1) dst나 src가 NULL이면 0을 리턴한다.
(2) dstsize가 0이면 src의 길이를 리턴한다.
(3) src[index] != '\0'이고, index + 1 < dstsize일 동안 dst에 src를 복사한다.
(4) dst의 마지막에 '\0'을 넣고 src의 길이를 반환한다.