-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathft_strlcpy.c
50 lines (43 loc) · 1.96 KB
/
ft_strlcpy.c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
/* ************************************************************************** */
/* */
/* ::: :::::::: */
/* ft_strlcpy.c :+: :+: :+: */
/* +:+ +:+ +:+ */
/* By: dolvin17 <[email protected]> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2022/03/21 18:47:13 by ghuertas #+# #+# */
/* Updated: 2022/04/22 01:14:10 by dolvin17 ### ########.fr */
/* */
/* ************************************************************************** */
#include "libft.h"
/* copia y concatena strings limitados por tamaño */
/* toma el tamaño completo del buffer dst y
garantiza la terminación NULL, si hay espacio */
size_t ft_strlcpy(char *dst, const char *src, size_t dstsize)
{
size_t i;
if (dstsize < 1) //si el tamaño de mi buffer es menor que 1
return (ft_strlen(src)); //devuelvo la longitud de mi origen.
i = 0; //seteo i a 0
while (src[i] != '\0' && i < (dstsize - 1)) //mientras mi origen en la posicion i, sea distinto de contrabarra cero. Y mi acumulador sea menor que mi buffer menos 1 PARA EL CHAR NULO.
{
dst[i] = src[i]; //copio mi origen en el destino.
i++; //y avanzo hasta cerrar el bucle.
}
dst[i] = '\0'; //por ultimo cierro con contrabarra cero mi destino.
i = ft_strlen(src); //i va a ser igual a la longitud de mi origen.
return (i); //y retorno esa longitud.
}
/*
#include <stdio.h>
#include <string.h>
int main(void)
{
char src[] = "Marvin";
char dst[] = "Ismycat";
unsigned int dstsize;
dstsize = 3;
printf("%zu\n", ft_strlcpy(dst, src, dstsize));
printf("%zu\n", strlcpy(dst, src, dstsize));
return (0);
}*/