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 |
---|
_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
Ayrıca bkz.
Başvuru
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