Skip to content

Instantly share code, notes, and snippets.

@yclim95
Last active May 25, 2022 03:36
Show Gist options
  • Save yclim95/0af040878e133d397c375ffe8ac7b4da to your computer and use it in GitHub Desktop.
Save yclim95/0af040878e133d397c375ffe8ac7b4da to your computer and use it in GitHub Desktop.
ft_strlcpy() in c
#include <stdio.h>

size_t	ft_strlen(const char *s)
{
	size_t	counter;

	counter = 0;
	while(s[counter] != '\0')
		counter++;
	return (counter);
}

void	*ft_memcpy(void *dest, const void *src, size_t n)
{
	char *pdest;
	const char *psrc;

	pdest = dest;
	psrc = src;
	if (!dest && !src)
		return (0);
	while (n-- > 0)
	{
		*pdest = *psrc;
		pdest++;
		psrc++;
	}
	return (dest);
}

size_t	ft_strlcpy(char *dest, const char *src, size_t size)
{
	size_t srclen;

	srclen = ft_strlen(src);
	if (srclen + 1 < size)
	{
		ft_memcpy(dest, src, srclen);
		dest[srclen] = '\0';
	}
	if (size != 0)
	{
		ft_memcpy(dest, src, size - 1);
		dest[size - 1] = '\0';
	}

	return (srclen);
}


int main()
{
    char string[] = "Hello there, Venus";
    char buffer[19];
    int r;

    r = ft_strlcpy(buffer,string,-1);

    printf("Copied '%s' into '%s', length %d\n",
            string,
            buffer,
            r
          );
    return (0);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment