共用方式為


strcpy_s、wcscpy_s、_mbscpy_s

複製字串。 這些 strcpy、wcscpy、_mbscpy 版本有安全性增強功能,如 CRT 中的安全性功能中所述。

重要

_mbscpy_s 無法用於在 Windows 執行階段 中執行的應用程式。如需詳細資訊,請參閱 /ZW 不支援 CRT 函式

errno_t strcpy_s(
   char *strDestination,
   size_t numberOfElements,
   const char *strSource 
);
errno_t wcscpy_s(
   wchar_t *strDestination,
   size_t numberOfElements,
   const wchar_t *strSource 
);
errno_t _mbscpy_s(
   unsigned char *strDestination,
   size_t numberOfElements,
   const unsigned char *strSource 
);
template <size_t size>
errno_t strcpy_s(
   char (&strDestination)[size],
   const char *strSource 
); // C++ only
template <size_t size>
errno_t wcscpy_s(
   wchar_t (&strDestination)[size],
   const wchar_t *strSource 
); // C++ only
template <size_t size>
errno_t _mbscpy_s(
   unsigned char (&strDestination)[size],
   const unsigned char *strSource 
); // C++ only

參數

  • strDestination
    目的端字串緩衝區的位置。

  • numberOfElements
    目的端字串緩衝區的大小。

  • strSource
    以 Null 結束的來源字串緩衝區。

傳回值

如果成功則為零,否則為錯誤碼。

錯誤狀況

strDestination

numberOfElements

strSource

傳回值

strDestination 的內容

NULL

any

any

EINVAL

未修改

any

any

NULL

EINVAL

strDestination[0] 設為 0

any

0 或太小

any

ERANGE

strDestination[0] 設為 0

備註

strcpy_s 函式會將 strSource 位址的內容 (包括結束的 null 字元),複製到 strDestination 指定的位置。 目的端字串必須大到足以保留來源字串及其結束 null 字元。 如果來源和目的字串發生重疊,則 strcpy_s 的行為是未定義。

wcscpy_s 是 strcpy_s 的寬字元版本,而 _mbscpy_s 則是多位元組字元版本 wcscpy_s 的引數和傳回值是寬字元字串,而 _mbscpy_s 的引數和傳回值則是多位元組字元字串。 這三個函式其餘部分的運作相同。

如果 strDestination 或 strSource 為 null 指標,或者如果目的字串太小,就會叫用無效的參數處理常式,如參數驗證中所述。 如果允許繼續執行,當 strDestination 或 strSource 為 null 指標時,這些函式會傳回 EINVAL 並將 errno 設為 EINVAL,當目的字串太小時,這些函式會傳回 ERANGE 並將 errno 設為 ERANGE。

成功執行後,目的字串永遠是以 null 終止的。

C++ 利用多載樣板簡化了這些函式的使用方式。多載可以自動推斷緩衝區長度 (讓您不必指定大小引數),也可以將不安全的舊函式自動取代成較新且較安全的對應函式。 如需詳細資訊,請參閱 安全範本多載

這些函式的偵錯版本會先用 0xFE 填入緩衝區。 若要停用此行為,請使用 _CrtSetDebugFillThreshold

一般文字常式對應

TCHAR.H 常式

未定義 _UNICODE & _MBCS

已定義 _MBCS

已定義 _UNICODE

_tcscpy_s

strcpy_s

_mbscpy_s

wcscpy_s

需求

常式

必要的標頭

strcpy_s

<string.h>

wcscpy_s

<string.h> 或 <wchar.h>

_mbscpy_s

<mbstring.h>

如需其他相容性資訊,請參閱 相容性

範例

// crt_strcpy_s.cpp
// This program uses strcpy_s and strcat_s
// to build a phrase.
//

#include <string.h>
#include <stdlib.h>
#include <stdio.h>
#include <errno.h>

int main( void )
{
   char string[80];
   // using template versions of strcpy_s and strcat_s:
   strcpy_s( string, "Hello world from " );
   strcat_s( string, "strcpy_s " );
   strcat_s( string, "and " );
   // of course we can supply the size explicitly if we want to:
   strcat_s( string, _countof(string), "strcat_s!" );
   
   printf( "String = %s\n", string );
}
  

.NET Framework 對等用法

System::String::Copy

請參閱

參考

字串操作 (CRT)

strcat、wcscat、_mbscat

strcmp、wcscmp、_mbscmp

strncat_s、_strncat_s_l、wcsncat_s、_wcsncat_s_l、_mbsncat_s、_mbsncat_s_l

strncmp、wcsncmp、_mbsncmp、_mbsncmp_l

strncpy_s、_strncpy_s_l、wcsncpy_s、_wcsncpy_s_l、_mbsncpy_s、_mbsncpy_s_l

_strnicmp、_wcsnicmp、_mbsnicmp、_strnicmp_l、_wcsnicmp_l、_mbsnicmp_l

strrchr、wcsrchr、_mbsrchr、_mbsrchr_l

strspn、wcsspn、_mbsspn、_mbsspn_l