본문 바로가기
Software/C++&MFC 함수

strcpy_s, wcscpy_s, _mbscpy_s, _tcscpy_s - 문자열 복사

by lovey25 2019. 10. 15.
반응형

strcpy_s, wcscpy_s, _mbscpy_s, _tcscpy_s

용도

문자열을 복사하는데 사용하고 strcpy함수의 보안이 강화된 버전

구문

#include <string.h>

#include <mbstring.h>  // _mbscpy_s 함수용

template <size_t size> // Template functions are C++ only:
errno_t strcpy_s(char (&dest)[size], const char *src);
template <size_t size>
errno_t wcscpy_s(wchar_t (&dest)[size], const wchar_t *src);
template <size_t size>
errno_t _mbscpy_s(unsigned char (&dest)[size], const unsigned char *src);
template <size_t size>
errno_t _mbscpy_s_l(unsigned char (&dest)[size], const unsigned char *src, _locale_t locale);

 

매개변수

dest

붙여넣을 문자열의 버퍼의 위치

dest_size

붙여넣을 문자열 버퍼의 크기.
narrow / 멀티바이트 함수에서는 char단위이고 와이드 함수에서는 wchar_t 단위.
이 값은 0보다 크고 RSIZE_MAX를 넘지 않아야 함.

src

Null 문자로 종료되는 원본 문자열.

locale

locale

반환

정상이면 0을 반환, 그렇지 않으면 error반환.

추가설명

strcpy_s함수는 원본 문자열 주소에 있는 내용을 널문자 포함하여 복사를 한다. 복사될 위치는 원본데이터와 널문자를 저장할 만큼 충분한 공간이 있어야 한다.

C++에서는 템플릿 오버로드에의해 함수사용이 간결해지기 때문에 size인자를 명시하지 않아도 자동으로 버퍼길이를 유추한다.

그리고 T캐릭터 함수를 사용하면 아래와 같이 호출됩니다.

미정의시: strcpy_s

_UNICODE 정의시: wcscpy_s 

_MBCS 정의시: _mbscpy_s

 

끝!

반응형

댓글