본문 바로가기
C

man strcpy (파파고 번역)

by Sondho 2020. 11. 26.

이름
     stpcpy, stpncpy, strcpy, strncpy -- 복사 문자열

라이브러리
     표준 C 라이브러리(libc, -lc)

요약
     #include <string.h>

     char *
     stpcpy(char * dst, const char * src);

     char *
     stpncpy(char * dst, const char * src, size_t len);

     char *
     strcpy(char * dst, const char * src);

     char *
     strncpy(char * dst, const char * src, size_t len);

DESCIPTION
    stpcpy() 및 strcpy() 함수는 문자열 src를 dst에 복사한다(종료 문자 '\0'을 포함하여.).

    stpncpy()와 strncpy() 함수는 최대 len 문자를 src에서 dst로 복사한다.  src가 len 문자보다 작으면 dst의 나머지가 '\0'자로 채워진다.  그렇지 않으면 dst가 종료되지 않는다.

    동작이 정의되지 않았으므로 소스 문자열과 대상 문자열이 겹치지 않아야 한다.

RETURN VALUES
    trcpy()와 strncpy() 함수는 dst를 반환한다. stpcpy()와 stpncpy() 함수는 dst의 종료 '\0' 문자로 포인터를 반환한다. stpncpy()가 NUL 문자로 dst를 종료하지 않으면 대신 dst[n]에 포인터를 반환한다(유효한 메모리 위치를 반드시 지칭하는 것은 아님).


    다음은 charararray를  "abc\0\0\0"으로 설정한다.

          char chararray[6];

           (void)strncpy(chararray, "abc", sizeof(chararray));

  다음은 ''chararray'를 ''abcdef''로 설정한다.

           char chararray[6];

          (void)strncpy(chararray, "abcdefgh", sizeof(chararray));

    소스 문자열의 길이가 길이 인수보다 크거나 같기 때문에 문자열을 종료하지 않는다는 점에 유의하십시오.

    다음은 입력에서 buf까지 최대 개수의 문자를 복사하고 NUL은 결과를 종료한다. strncpy()는 NUL이 문자열 자체를 종료하는 것을 보증하지 않기 때문에 명시적으로 수행해야 한다.

          char buf[1024];

           (void)strncpy(buf, input, sizeof(buf) - 1);
           buf[sizeof(buf) - 1] = '\0';

     이는 다음에 나타낸 것과 같이 strlcpy(3)를 사용하여 더 잘 달성할 수 있다.
     예:

          (void)strlcpy(buf, input, sizeof(buf));

    strlcpy(3)는 어떤 표준에서도 정의되지 않기 때문에 휴대성이 문제가 되지 않는 경우에만 사용해야 한다는 점에 유의한다.

참고 항목
     BCopy(3), memccpy(3), memcpy(3), memcpy(3), memmove(3), strlcpy(3), wcscpy(3)

표준
    strcpy()와 strncpy() 함수는 ISO/IEC 9899:1990("ISO C90")을 준수한다. stpcpy()와 stpncpy() 함수는 IEEE 규격 1003.1-2008('"POSIX.1")을 준수한다.
역사
    stpcpy() 함수는 FreeBSD 4.4에서 처음 나타났고, stpncpy()가 n FreeBSD 8.0에 추가됐다.

보안 고려 사항
    strcpy() 함수는 악성 사용자가 버퍼 오버플로 공격을 통해 실행 중인 프로그램의 기능을 임의로 변경할 수 있는 방식으로 쉽게 오용된다.

댓글