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ż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ównumberOfElements
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
Zobacz też
Informacje
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