본문 바로가기
Language/C언어

C029_strlcpy 함수 구현해서 사용하기

by OdOp 관리자 2023. 10. 24.
SMALL

strlcpy는 strncpy와 비슷하다고 생각하면 될 것 같습니다. 

strncpy는 사용자가 지정한 자릿수만큼 복사 붙여 넣는 것을 의미합니다.

마찬가지로 똑같이 복사 붙여넣기 하는데 return해주는 값이 다릅니다.

복사하는 대상의 문자열 길이를 리턴해줍니다.

size_t strlcpy(char *dest, char *src, size_t destsize)

dest에 src를 destsize-1만큼 복사해 줍니다. (null문자를 포함하기 때문입니다.)

반해주는 값은 src의 길이입니다. 

이때 dest나 src중 하나라도 문자열이 비어있다면 0을 반환해 줍니다. 

unsigned int    OdOp_strlcpy(char *dest, char *src, unsigned int size)
{
    unsigned int    i;
    unsigned int    src_i;

    src_i = 0;
    while (*(src + src_i))
    {
        src_i++;
    }
    if (!dest || !src)
        return (0);
    i = 0;
    while (*(src + i) && i + 1 < size)
    {
        *(dest + i) = *(src + i);
        i++;
    }
    if (size > 0)
        *(dest + i) = '\0';
    return (src_i);
}
LIST