Поделиться через


strcpy, wcscpy, _mbscpy

Копирует строку. Доступны более безопасные версии этих функций; see , , _mbscpy_swcscpy_s.strcpy_s

Важно!

_mbscpy не может использоваться в приложениях, запускаемых в среде выполнения Windows. Дополнительные сведения: Функции CRT, которые не поддерживаются в приложениях универсальной платформы Windows.

Синтаксис

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.

Возвращаемое значение

Каждая из этих функций возвращает строку назначения. Нет зарезервированных возвращаемых значений для указания ошибки.

Замечания

Функция strcpy копирует strSource, включая завершающий символ нуля, в указанное расположение, заданное 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