strcpy, wcscpy, _mbscpy

文字列をコピーします。 これらの関数のセキュリティを強化したバージョンを使用できます。「 」、「」を参照し strcpy_s てください。 wcscpy_s _mbscpy_s

重要

_mbscpy Windows ランタイムで実行するアプリケーションでは使用できません。 詳細については、「ユニバーサル Windows プラットフォーム アプリでサポートされていない CRT 関数」を参照してください。

構文

char *strcpy(
   char *strDestination,
   const char *strSource
);
wchar_t *wcscpy(
   wchar_t *strDestination,
   const wchar_t *strSource
);
unsigned char *_mbscpy(
   unsigned char *strDestination,
   const unsigned char *strSource
);
template <size_t size>
char *strcpy(
   char (&strDestination)[size],
   const char *strSource
); // C++ only
template <size_t size>
wchar_t *wcscpy(
   wchar_t (&strDestination)[size],
   const wchar_t *strSource
); // C++ only
template <size_t size>
unsigned char *_mbscpy(
   unsigned char (&strDestination)[size],
   const unsigned char *strSource
); // C++ only

パラメーター

strDestination
対象文字列。

strSource
NULL で終わる元の文字列。

戻り値

これらの関数は、コピー先文字列を返します。 エラーを示す戻り値は予約されていません。

Remarks

関数は、 strcpy によって指定された場所に strsource(終端の null 文字を含む) をコピー strDestination します。 strcpy コピー元とコピー先の文字列が重なり合っている場合、の動作は未定義です。

重要

strcpy は、コピーする前に、 strdestination に十分な領域があるかどうかがチェックされないため strSource 、バッファーオーバーランが発生する可能性があります。 そのため、代わりにを使用することをお勧め strcpy_s します。

wcscpy_mbscpy はそれぞれ、のワイド文字バージョンとマルチバイト文字バージョン strcpy です。 の引数と戻り値はワイド文字列であり、の引数と戻り値 wcscpy _mbscpy はマルチバイト文字列です。 それ以外では、これらの関数の動作は同じです。

C++ では、これらの関数にテンプレートのオーバーロードがあります。このオーバーロードは、これらの関数に対応するセキュリティで保護された新しい関数を呼び出します。 詳細については、「セキュリティ保護されたテンプレート オーバーロード」を参照してください。

既定では、この関数のグローバル状態はアプリケーションにスコープが設定されています。 これを変更するには、「 CRT でのグローバル状態」を参照してください。

汎用テキスト ルーチンのマップ

TCHAR.H ルーチン _UNICODE & _MBCS 未定義 _MBCS _UNICODE
_tcscpy strcpy _mbscpy wcscpy

必要条件

ルーチンによって返される値 必須ヘッダー
strcpy <string.h>
wcscpy <string.h> または <wchar.h>
_mbscpy <mbstring.h>

互換性の詳細については、「互換性」を参照してください。

// crt_strcpy.c
// compile with: /W3
// This program uses strcpy
// and strcat to build a phrase.

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

int main( void )
{
   char string[80];

   // If you change the previous line to
   //   char string[20];
   // strcpy and strcat will happily overrun the string
   // buffer.  See the examples for strncpy and strncat
   // for safer string handling.

   strcpy( string, "Hello world from " ); // C4996
   // Note: strcpy is deprecated; use strcpy_s instead
   strcat( string, "strcpy " );           // C4996
   // Note: strcat is deprecated; use strcat_s instead
   strcat( string, "and " );              // C4996
   strcat( string, "strcat!" );           // C4996
   printf( "String = %s\n", string );
}
String = Hello world from strcpy and strcat!

関連項目

文字列操作
strcat, wcscat, _mbscat
strcmp, wcscmp, _mbscmp
strncat, _strncat_l, wcsncat, _wcsncat_l, _mbsncat, _mbsncat_l
strncmp, wcsncmp, _mbsncmp, _mbsncmp_l
strncpy, _strncpy_l, wcsncpy, _wcsncpy_l, _mbsncpy, _mbsncpy_l
_strnicmp, _wcsnicmp, _mbsnicmp, _strnicmp_l, _wcsnicmp_l, _mbsnicmp_l
strrchr, wcsrchr, _mbsrchr, _mbsrchr_l
strspn, wcsspn, _mbsspn, _mbsspn_l