strcpy_s, wcscpy_s, _mbscpy_s

Bir dizeyi kopyalar.Bu strcpy, wcscpy, _mbscpy sürümlerinde CRT'deki Güvenlik Özellikleri içinde açıklandığı gibi güvenlik geliştirmeleri mevcut olabilir.

Önemli notÖnemli

_mbscpy_s, Windows Çalışma Zamanı içinde yürütülen uygulamalarda kullanılmaz.Daha fazla bilgi için bkz /ZW ile desteklenmeyen CRT işlevleri.

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

Parametreler

  • strDestination
    Hedef dize arabelleğinin konumu.

  • numberOfElements
    Hedef dize arabelleğinin boyutu.

  • strSource
    Null ile sonlandırılmış kaynak dizesi arabelleği.

Dönüş Değeri

Başarılıysa sıfır; aksi halde hata.

Hata Durumları

strDestination

numberOfElements

strSource

Dönüş değeri

strDestination içeriği

NULL

any

any

EINVAL

değiştirilmemiş

any

any

NULL

EINVAL

strDestination[0], 0 olarak ayarlı

any

0 veya çok küçük

any

ERANGE

strDestination[0], 0 olarak ayarlı

Notlar

strcpy_s işlevi, sonlandırıcı null karakter de dahil olmak üzere strSource adresindeki içerikleri strDestination tarafından belirtilen konuma kopyalar.Hedef dize, kaynak dizeyi ve onu sonlandıran null karakteri alacak kadar büyük olmalıdır.Kaynak ve hedef dizeleri örtüştürürse strcpy_s davranışı tanımsızdır.

wcscpy_s, strcpy_s öğesinin geniş karakter sürümü, _mbscpy_s ise çok baytlı karakter sürümüdür.Bağımsız değişkenler ve wcscpy_s dönüş değeri geniş karakterli dizelerdir; _mbscpy_s dizeleri çok baytlı karakter dizeleridir.Bu üç işlev, aynı şekilde davranır.

strDestination or strSource bir null işaretçiyse veya hedef dize çok küçükse Parametre Doğrulama içinde açıklandığı şekilde geçersiz parametre işleyicisi çağrılır.Yürütmenin devam etmesine izin verilirse bu işlevler EINVAL döndürür ve strDestination veya strSource null işaretçisi olduğunda errno öğesini EINVAL olarak ayarlar ve hedef dize çok küçük olduğunda bunlar ERANGE döndürür ve errno öğesini ERANGE olarak ayarlar.

Başarılı yürütme sonrasında hedef dize her zaman null sonlandırılmıştır.

C++ dilinde bu işlevlerin kullanımı, uzunluğun otomatik olarak ara belleğe alınmasını başlatan şablon aşırı yüklemeleriyle basitleştirilmiştir böylece bir boyut bağımsız değişkeni belirtmeniz gerekmez, bunlar otomatik olarak eski ve daha az güvenli olan işlevlerle daha yeni ve güvenli karşılıklarını değiştirir.Daha fazla bilgi için bkz. Güvenli Şablon Aşırı Yüklemeleri.

Bu işlevlerin hata ayıklama sürümleri arabelleği ilk önce 0xFE ile doldurur.Bu davranışı devre dışı bırakmak için _CrtSetDebugFillThreshold kullanın.

Genel Metin Yordam Eşleşmeleri

TCHAR.H yordamı

_UNICODE & _MBCS tanımlanmamış

_MBCS tanımlanmış

_UNICODE tanımlanmış

_tcscpy_s

strcpy_s

_mbscpy_s

wcscpy_s

Gereksinimler

Yordam

Gerekli başlık

strcpy_s

<string.h>

wcscpy_s

<string.h> or <wchar.h>

_mbscpy_s

<mbstring.h>

Ek uyumluluk bilgileri için bkz. Uyumluluk.

Örnek

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

.NET Framework Eşdeğeri

System::String::Copy

Ayrıca bkz.

Başvuru

Dize Düzenlemesi (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