#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));
}