memmove_s, wmemmove_s
Přesune jeden vyrovnávací paměti do jiného.Tyto verze jsou memmove, wmemmove s vylepšení zabezpečení popsaným v Funkce zabezpečení v CRT.
errno_t memmove_s(
void *dest,
size_t numberOfElements,
const void *src,
size_t count
);
errno_t wmemmove_s(
wchar_t *dest,
size_t numberOfElements,
const wchar_t *src,
size_t count
);
Parametry
dest
Cílový objekt.numberOfElements
Velikost cílové vyrovnávací paměti.src
Zdrojový objekt.count
Počet bajtů (memmove_s) nebo znaky (wmemmove_s) zkopírujte.
Vrácená hodnota
Nula, pokud je úspěšná. Kód chyby při selhání
Chybové podmínky
dest |
numberOfElements |
src |
Vrácená hodnota |
Obsahdest |
---|---|---|---|---|
NULL |
žádné |
žádné |
EINVAL |
Nezměněno |
žádné |
žádné |
NULL |
EINVAL |
Nezměněno |
žádné |
< count |
žádné |
ERANGE |
Nezměněno |
Poznámky
Kopie count bajtů znaků z src na dest*.* Pokud v některých oblastech oblasti zdroj a cíl překrývají, memmove_s zajišťuje, že původní zdroj bajtů v překrývajících se oblastí jsou zkopírovány před přepsání.
Pokud dest nebo src je ukazatel hodnotu null nebo pokud cíl řetězec je příliš malý, tyto funkce vyvolat obslužnou rutinu neplatný parametr popsaným v Ověření parametru .Pokud je povoleno spuštění pokračovat, vrátí tyto funkce EINVAL a errno na EINVAL.
Požadavky
Rutina |
Požadované záhlaví |
---|---|
memmove_s |
<string.h> |
wmemmove_s |
<wchar.h> |
Další informace o kompatibilitě, viz Compatibility v úvodu.
Příklad
// crt_memmove_s.c
//
// The program demonstrates the
// memmove_s function which works as expected
// for moving overlapping regions.
#include <stdio.h>
#include <string.h>
int main()
{
char str[] = "0123456789";
printf("Before: %s\n", str);
// Move six bytes from the start of the string
// to a new position shifted by one byte. To protect against
// buffer overrun, the secure version of memmove requires the
// the length of the destination string to be specified.
memmove_s((str + 1), strnlen(str + 1, 10), str, 6);
printf_s(" After: %s\n", str);
}
Výsledek
Before: 0123456789
After: 0012345789
Ekvivalent v rozhraní .NET Framework
Viz také
Referenční dokumentace
Zacházení s vyrovnávací pamětí
strncpy_s, _strncpy_s_l, wcsncpy_s, _wcsncpy_s_l, _mbsncpy_s, _mbsncpy_s_l
strncpy, _strncpy_l, wcsncpy, _wcsncpy_l, _mbsncpy, _mbsncpy_l