Udostępnij za pośrednictwem


strcpy_s, wcscpy_s, _mbscpy_s

Skopiuj ciąg.Są to wersje strcpy, wcscpy, _mbscpy z ulepszeń zabezpieczeń, zgodnie z opisem w Funkcje zabezpieczeń w CRT.

Ważna uwagaWażne

_mbscpy_sNie można używać w aplikacji, których wykonywanie w czasie wykonywania systemu Windows.Aby uzyskać więcej informacji, zobacz CRT funkcje nie obsługiwane przez /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

Parametry

  • strDestination
    Lokalizacja przeznaczenia nieprawidłowe działanie buforu ciągów

  • numberOfElements
    Rozmiar docelowy bufor dla łańcucha.

  • strSource
    Nieprawidłowe działanie buforu ciągów źródła zakończonym znakiem null.

Wartość zwracana

Zero, jeśli kończy się pomyślnie; Błąd inaczej.

Warunki błędów

strDestination

numberOfElements

strSource

Zwracana wartość

ZawartośćstrDestination

NULL

wszelkie

wszelkie

EINVAL

niemodyfikowane

wszelkie

wszelkie

NULL

EINVAL

strDestination[0] ustawione na 0

wszelkie

0 lub za mały

wszelkie

ERANGE

strDestination[0] ustawione na 0

Uwagi

strcpy_s Funkcja wpisuje w polu adres w strSource, włączając kończącego znaku null — w lokalizacji określonej przez strDestination.Ciąg docelowego musi być wystarczająco duży, aby pomieścić ciąg źródłowy, łącznie z zakończonych znakiem null.Zachowanie strcpy_s jest niezdefiniowana, jeśli nakładają się ciągi źródłowego i docelowego.

wcscpy_si _mbscpy_s szerokich znaków i znaków wielobajtowych wersje strcpy_s odpowiednio.Argumenty i wartości zwracanej przez wcscpy_s są ciągami szerokiego znaku; tych z _mbscpy_s są ciągami znaków wielobajtowych.Zmienia tych trzech funkcji zachowanie takich samych nazwach.

Jeśli strDestination lub strSource jest pusty wskaźnik, lub jeżeli ciąg docelowy jest zbyt mały, program obsługi nieprawidłowy parametr jest uruchamiane zgodnie z opisem w Sprawdzanie poprawności parametru.Jeśli wykonanie może kontynuować, funkcje te zwracają EINVAL i errno do EINVAL.

Po pomyślnym wykonaniu ciąg docelowy zawsze będzie zakończona znakiem null.

W języku C++ korzystając z tych funkcji jest uproszczony przez przeciążenia szablonu; przeciążenia mogą wywnioskować długość buforu automatycznie (eliminując konieczność, aby określić argument rozmiar) i starszych, które nie są bezpieczne funkcje mogą automatycznie zastąpić z ich odpowiednikami nowsze, bezpieczne.Aby uzyskać więcej informacji, zobacz Secure, szablon Overloads.

Wersje do debugowania tych funkcji najpierw wypełnić bufor z 0xFE.Aby wyłączyć to zachowanie, należy użyć _CrtSetDebugFillThreshold.

Tekst rodzajowy rutynowych mapowania

TCHAR.Rozpoczęto wykonywanie procedury h

_UNICODE & _MBCS nie zdefiniowany

_MBCS, definicja

_UNICODE, definicja

_tcscpy_s

strcpy_s

_mbscpy_s

wcscpy_s

Wymagania

Rozpoczęto wykonywanie procedury

Wymaganego nagłówka

strcpy_s

<string.h>

wcscpy_s

<string.h> lub <wchar.h>

_mbscpy_s

<mbstring.h>

Aby uzyskać dodatkowe informacje o zgodności, zobacz zgodności we wprowadzeniu.

Przykład

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

Odpowiednik w programie .NET Framework

System::String::Copy

Zobacz też

Informacje

Manipulowanie ciągami (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