[42seoul] strlcpy는 어떤 함수일까??

개발하는 곰댕이·2021년 4월 9일
3

42Seoul

목록 보기
21/45
  • include

#include <string.h>
size_t strlcpy(char * dest, const char * src, size_t size);
  • 인자

    • dest
      복사가 진행될 목적지이다. void * 의 형태로 string뿐 아니라 다른 값도 들어올 수 있다.
    • src
      우리가 복사를 해야하는 값이 들어있는 포인터이다.
    • dstsize
      최대 size - 1만큼만 복사를 진행한다. (\0값을 넣기 위해)

1. strlcpy란??

strlcpy는 문자열을 복사해주는 함수인데, dest안에 src의 값을 복사해 준다. size는 뭐 하는 녀석이지?? sizesrc의 길이 이하일때 이용되는 녀석이다. strlcpy는 src의 '\0'값을 만나기 전 혹은 size - 1만큼 복사가 이루어 졌을때 복사를 중지한다.

왜 -1이 붙은 것일까??

이유는 복사를 진행한 후 '\0'값을 넣어주기 위해서 그런 것이다. 이러한 이유로 strlcpy는 strcpy나 strncpy보다 안정성이 있는 함수이다.

2. 사용 예제

size를 넉넉하게 13을 주면 모두 복사가 되고 리턴값은 항상 src의 길이를 리턴해 준다.

만약 여기서 size를 src의 길이인 6을 넣으면 어떻게 출력이 될까??

이런식으로 12345까지만 복사를 하게 된다.

3. 리턴값

우리가 복사하려했던 문자열의 길이를 리턴해 준다.

1개의 댓글

comment-user-thumbnail
2022년 12월 25일

덕분에 좋은 내용 잘 보고 갑니다.
정말 감사합니다.

답글 달기