Dia Egg - Shugo Chara

C

strlcpy 함수의 구현

별ㅇI 2023. 10. 16. 14:46
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
반응형