_strdup
, _wcsdup
, _mbsdup
Dizeleri çoğaltır.
Önemli
_mbsdup
Windows Çalışma Zamanı yürütülen uygulamalarda kullanılamaz. Daha fazla bilgi için bkz. Evrensel Windows Platformu uygulamalarında desteklenmeyen CRT işlevleri.
Sözdizimi
char *_strdup(
const char *strSource
);
wchar_t *_wcsdup(
const wchar_t *strSource
);
unsigned char *_mbsdup(
const unsigned char *strSource
);
Parametreler
strSource
Null olarak sonlandırılan kaynak dize.
Dönüş değeri
Bu işlevlerin her biri, kopyalanan dizenin depolama konumuna veya NULL
depolama ayrılamıyorsa bir işaretçi döndürür.
Açıklamalar
İşlev, bir kopyası strSource
için depolama alanı ayırmayı çağırır malloc
ve ardından ayrılan alana kopyalarstrSource
._strdup
_wcsdup
ve _mbsdup
geniş karakterli ve çok baytlı sürümleridir _strdup
. bağımsız değişkenleri ve dönüş değeri _wcsdup
geniş karakterli dizelerdir. bağımsız değişkenleri ve dönüş değeri _mbsdup
çok baytlı karakter dizeleridir. Bu üç işlev aynı şekilde davranır.
Varsayılan olarak, bu işlevin genel durumunun kapsamı uygulama olarak belirlenmiştir. Bu davranışı değiştirmek için bkz. CRT'de Genel durum.
Genel metin yordamı eşlemeleri
TCHAR.H Rutin |
_UNICODE ve _MBCS tanımlanmadı |
_MBCS Tanımlanan |
_UNICODE Tanımlanan |
---|---|---|---|
_tcsdup |
_strdup |
_mbsdup |
_wcsdup |
_strdup
kopyası strSource
için depolama alanı ayırmaya yönelik çağrılar malloc
olduğundan, çağrısı tarafından _strdup
döndürülen işaretçide yordamını çağırarak free
bu belleği serbest bırakmak her zaman iyi bir uygulamadır.
ve _CRTDBG_MAP_ALLOC
tanımlanırsa _strdup
_DEBUG
ve _wcsdup
bellek ayırmalarında hata ayıklamaya izin vermek için ve _wcsdup_dbg
çağrılarıyla _strdup_dbg
değiştirilir. Daha fazla bilgi için bkz. _strdup_dbg
, _wcsdup_dbg
.
Gereksinimler
Yordam | Gerekli başlık |
---|---|
_strdup |
<string.h> |
_wcsdup |
<string.h> veya <wchar.h> |
_mbsdup |
<mbstring.h> |
Daha fazla uyumluluk bilgisi için bkz . Uyumluluk.
Örnek
// crt_strdup.c
#include <string.h>
#include <stdio.h>
int main( void )
{
char buffer[] = "This is the buffer text";
char *newstring;
printf( "Original: %s\n", buffer );
newstring = _strdup( buffer );
printf( "Copy: %s\n", newstring );
free( newstring );
}
Original: This is the buffer text
Copy: This is the buffer text
Ayrıca bkz.
Dize işleme
memset
, wmemset
strcat
, wcscat
, _mbscat
strcmp
, wcscmp
, _mbscmp
strncat
, _strncat_l
, wcsncat
, _wcsncat_l
, _mbsncat
, _mbsncat_l
strncmp
, wcsncmp
, _mbsncmp
, _mbsncmp_l
strncpy
, _strncpy_l
, wcsncpy
, _wcsncpy_l
, _mbsncpy
, _mbsncpy_l
_strnicmp
, _wcsnicmp
, _mbsnicmp
, _strnicmp_l
, _wcsnicmp_l
, _mbsnicmp_l
strrchr
, wcsrchr
, _mbsrchr
, _mbsrchr_l
strspn
, wcsspn
, _mbsspn
, _mbsspn_l
Geri Bildirim
https://aka.ms/ContentUserFeedback.
Çok yakında: 2024 boyunca, içerik için geri bildirim mekanizması olarak GitHub Sorunları’nı kullanımdan kaldıracak ve yeni bir geri bildirim sistemiyle değiştireceğiz. Daha fazla bilgi için bkz.Gönderin ve geri bildirimi görüntüleyin