본문 바로가기
Language/C언어

C035_strlcat 함수 구현해서 사용하기

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

strlcat은 strcat과 마찬가지로 문자열 뒤에 문자열을 붙여 넣는 함수입니다. 

다만, 복사되고 나서의 문자열의 길이 제한과 반환해 주는 값이 문자열이 길이가 된다는 특이점이 존재합니다. 

 

strlcat 함수를 구현해 보겠습니다. 

 

strlcat 함수

int    ft_len(char *str)
{
    int    i;

    i = 0;
    while (str[i] != '\0')
    {
        i++;
    }
    return (i);
}

unsigned int    OdOp_strlcat(char *dest, char *src, unsigned int size)
{
    unsigned int    i;
    unsigned int    j;

    i = ft_len(dest);
    if (i > size)
        return (size + ft_len(src));
    j = 0;
    while (src[j] != '\0' && i + j + 1 < size)
    {
        dest[i + j] = src[j];
        j++;
    }
    dest[i + j] = '\0';
    return (i + j);
}

우선 dest의 길이를 젭니다. 

dest의 길이가 size보다 크다면 앞에서 설명드린 길이 제한에 걸리기 때문에 size + src의 길이를 반환해 줍니다. 

 

dest뒤에 src를 dest의 길이가 size보다 작거나 src 문자열이 끝나기 전까지 dest에 붙여줍니다. 

다 완료했다면 dest의 길이를 반환해 줍니다. 

LIST