Bagikan melalui


_strdup, , _wcsdup_mbsdup

Menduplikasi string.

Penting

_mbsdup tidak dapat digunakan dalam aplikasi yang dijalankan di Windows Runtime. Untuk informasi selengkapnya, lihat Fungsi CRT yang tidak didukung di aplikasi Platform Windows Universal.

Sintaks

char *_strdup(
   const char *strSource
);
wchar_t *_wcsdup(
   const wchar_t *strSource
);
unsigned char *_mbsdup(
   const unsigned char *strSource
);

Parameter

strSource
String sumber yang dihentikan null.

Nilai hasil

Masing-masing fungsi ini mengembalikan penunjuk ke lokasi penyimpanan untuk string yang disalin atau NULL jika penyimpanan tidak dapat dialokasikan.

Keterangan

Fungsi memanggil _strdup malloc untuk mengalokasikan ruang penyimpanan untuk salinan strSource lalu menyalin strSource ke ruang yang dialokasikan.

_wcsdup dan _mbsdup adalah versi karakter lebar dan multibyte-character dari _strdup. Argumen dan nilai yang dikembalikan adalah _wcsdup string karakter lebar. Argumen dan nilai yang dikembalikan adalah _mbsdup string multibyte-character. Ketiga fungsi ini berulah secara identik jika tidak.

Secara default, status global fungsi ini dicakup ke aplikasi. Untuk mengubah perilaku ini, lihat Status global di CRT.

Pemetaan rutin teks generik

TCHAR.H Rutin _UNICODE dan _MBCS tidak ditentukan _MBCS Didefinisikan _UNICODE Didefinisikan
_tcsdup _strdup _mbsdup _wcsdup

Karena _strdup panggilan malloc untuk mengalokasikan ruang penyimpanan untuk salinan strSource, adalah praktik yang baik selalu untuk melepaskan memori ini dengan memanggil free rutinitas pada pointer yang dikembalikan oleh panggilan ke _strdup.

Jika _DEBUG dan _CRTDBG_MAP_ALLOC didefinisikan, _strdup dan _wcsdup digantikan oleh panggilan ke _strdup_dbg dan _wcsdup_dbg, untuk memungkinkan debugging alokasi memori. Untuk informasi selengkapnya, lihat _strdup_dbg, _wcsdup_dbg.

Persyaratan

Rutin Header yang diperlukan
_strdup <string.h>
_wcsdup <string.h> atau <wchar.h>
_mbsdup <mbstring.h>

Untuk informasi kompatibilitas selengkapnya, lihat Kompatibilitas.

Contoh

// 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

Lihat juga

Manipulasi string
memset, wmemset
strcat, , wcscat_mbscat
strcmp, , wcscmp_mbscmp
strncat, , _strncat_lwcsncat, _wcsncat_l, , _mbsncat,_mbsncat_l
strncmp, , wcsncmp_mbsncmp,_mbsncmp_l
strncpy, , _strncpy_lwcsncpy, _wcsncpy_l, , _mbsncpy,_mbsncpy_l
_strnicmp, , _wcsnicmp_mbsnicmp, _strnicmp_l, , _wcsnicmp_l,_mbsnicmp_l
strrchr, , wcsrchr_mbsrchr,_mbsrchr_l
strspn, , wcsspn_mbsspn,_mbsspn_l