728x90
반응형
strlcpy 함수
- strning.h 헤더 파일에 들어있는 함수이다
- 원형은 size_t strlcpy(char * restrict dst, const char * restrict src, size_t dstsize)를 따른다.
- dest를 len -1 만큼의 길이안에서 src를 복사해주는 함수이다. 즉, size -1 까지 복사를 한 경우와 '\0'을 만났을때의 두가지 종료조건이 있다.
- 마지막에 \0를 보장해준다.
- 반환값은 src(복사할 문자열)의 길이이다.(복사 된 길이를 반환하므로 null을 뺀 값)
strlcpy 함수의 구현
#include "libft.h"
size_t ft_strlcpy(char *dest, const char *src, size_t size)
{
size_t i;
size_t src_len;
src_len = ft_strlen(src);
i = 0;
if (!dest || !src)
return (0);
while (i < src_len && i + 1 < size)
{
dest[i] = src[i];
i++;
}
if (size > 0)
{
dest[i] = '\0';
}
return (src_len);
}
// #include <string.h>
// #include <stdio.h>
// int main(void)
// {
// char dest1[9] = "applepie";
// char dest2[9] = "applepie";
// const char src[6] = "peach";
// int i = 0;;
// printf("strlcpy_return : %lu\n", strlcpy(dest1, src, 8));
// printf("ft_strlcpy_return : %lu\n", ft_strlcpy(dest2, src, 8));
// printf("strlcpy : %s\n", dest1);
// printf("ft_strlcpy : %s\n", dest2);
// char dest3[9] = "applepie";
// char dest4[9] = "applepie";
// printf("strlcpy_return : %lu\n", strlcpy(dest3, src, 0));
// printf("ft_strlcpy_return : %lu\n", ft_strlcpy(dest4, src, 0));
// while (i < 9)
// {
// printf("strlcpy : %c\n", dest3[i++]);
// }
// printf("\n");
// i = 0;
// while (i < 9)
// {
// printf("ft_strlcpy : %c\n", dest4[i++]);
// }
// return(0);
// }
728x90
반응형
'C' 카테고리의 다른 글
strlcat 함수의 구현 (+strlcat 함수의 리턴값에 대해) (2) | 2023.10.16 |
---|---|
memmove 함수의 구현 (+ memmove함수와 memcpy함수의 차이) (2) | 2023.10.16 |
memcpy 함수의 구현 (0) | 2023.10.13 |
restrict란? (0) | 2023.10.13 |
bzero 함수의 구현 (2) | 2023.10.13 |