Compartilhar via


strcpy_s, wcscpy_s, _mbscpy_s

Copiar uma cadeia de caracteres.Essas são versões de strcpy, wcscpy, _mbscpy com aprimoramentos de segurança conforme descrito em Recursos de segurança no CRT.

Observação importanteImportante

_mbscpy_s não pode ser usado em aplicativos executados em Tempo de Execução do Windows.Para obter mais informações, consulte Funções de CRT não suportadas com /ZW.

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

Parâmetros

  • strDestination
    Local de armazenamento de cadeia de caracteres de destino

  • numberOfElements
    Tamanho do buffer de cadeia de caracteres de destino.

  • strSource
    Buffer NULL- terminado de cadeia de caracteres de origem.

Valor de retorno

Zero se com êxito; um erro de outra forma.

Condições de erro

strDestination

numberOfElements

strSource

Valor de Retorno

Conteúdo de strDestination

NULL

alguns

alguns

EINVAL

não modificado

alguns

alguns

NULL

EINVAL

[]strDestination0 definido como 0

alguns

0, ou muito pequeno

alguns

ERANGE

[]strDestination0 definido como 0

Comentários

A função de strcpy_s copia o conteúdo no endereço de strSource, incluindo o caractere de terminação zero, o local especificado por strDestination.A cadeia de caracteres de destino deve ser grande o suficiente para armazenar a cadeia de caracteres de origem, incluindo o caractere de terminação zero.O comportamento de strcpy_s é indefinido se as cadeias de caracteres de origem e de destino sobrepostos.

wcscpy_s e _mbscpy_s são versões de largo- caractere e o caractere multibyte- de strcpy_s respectivamente.Os argumentos e o valor de retorno de wcscpy_s são cadeias de caracteres; todo essas de _mbscpy_s são cadeias de caracteres de multibyte.Essas três funções se comportam de forma idêntica.

Se strDestination ou strSource são um ponteiro zero, ou se a cadeia de caracteres de destino é muito pequena, o manipulador inválido do parâmetro é chamado como descrito em Validação de parâmetro.Se a execução é permitida continuar, essas funções EINVAL de retorno e errno defina a EINVAL.

Após a execução bem-sucedida, a cadeia de caracteres de destino será sempre nula finalizada.

Em C++, usar essas funções é simplificada por sobrecargas de modelo; as sobrecargas podem interpretar o tamanho do buffer (automaticamente que elimina a necessidade de especificar um argumento de tamanho) e podem automaticamente substituir mais antigos, não funções de segurança mais recentes, com suas contrapartes seguros.Para obter mais informações, consulte Proteger Overloads de modelo.

As versões de depuração dessas funções preenchem primeiro o buffer com 0xFE.Para desativar esse comportamento, use _CrtSetDebugFillThreshold.

Mapeamentos da rotina de Genérico- texto

Rotina de TCHAR.H

_UNICODE & _MBCS não definidos

_MBCS definido

_UNICODE definido

_tcscpy_s

strcpy_s

_mbscpy_s

wcscpy_s

Requisitos

Rotina

Cabeçalho necessário

strcpy_s

<string.h>

wcscpy_s

<string.h> ou <wchar.h>

_mbscpy_s

<mbstring.h>

Para informações extras de compatibilidade Compatibilidade na introdução, consulte.

Exemplo

// 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 );
}
  

Equivalência do .NET Framework

System::String::Copy

Consulte também

Referência

Manipulação de cadeia de caracteres (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