#include <stdio.h>

#include <unistd.h>

char	*ft_strncpy(char *dest, char *src, unsigned int n)
{
	char	*ptr = dest;

	while (*src && n--)
	{
		*dest = *src;
		dest++;
		src++;
	}
	*dest = '\\0';
	return (ptr);
}

int main() {
    char a[] = "adad";
    char b[] = "asrereer";

    printf("%s",ft_strncpy(a,b,2));    
    return 0;
}

이건 만약에 n이 dest보다 크면 그 차이만큼 널 문자를 넣어야 한다는 얘기가 있어서 수정을 할 수도 있다.

C - <string.h> - strcpy, strncpy, strlcpy 구현하기

수정한 코드

#include <unistd.h>
#include <stdio.h>

char	*ft_strncpy(char *dest, char *src, unsigned int n)
{
    unsigned int i;

    i = 0;
    while (src[i] && i < n)
    {
    	dest[i] = src[i];
    	i++;
    }
    while (i < n)
    {
        dest[i] = '\\0';
        i++;
    }
	return (dest);
}

int main(void)
{
    char a[10] = "abcde";
    char b[] = "adsd77878";

    printf("%s",ft_strncpy(a,b,7));
}