memmove_s, wmemmove_s
Przenosi jeden bufor do innego.Są to wersje memmove, wmemmove z rozszerzeń zabezpieczeń opisane w Funkcje zabezpieczeń w 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
Obiekt docelowy.numberOfElements
Rozmiar buforu docelowego.src
Obiekt źródłowy.count
Liczba bajtów (memmove_s) lub znaki (wmemmove_s) do skopiowania.
Wartość zwracana
Zero, jeśli kończy się pomyślnie; Kod błędu w przypadku awarii
Warunki błędów
dest |
numberOfElements |
src |
Zwracanie wartości |
Zawartośćdest |
---|---|---|---|---|
NULL |
wszelkie |
wszelkie |
EINVAL |
Nie zmodyfikowano |
wszelkie |
wszelkie |
NULL |
EINVAL |
Nie zmodyfikowano |
wszelkie |
< count |
wszelkie |
ERANGE |
Nie zmodyfikowano |
Uwagi
Kopie count bajtów znaków z src do dest*.* Jeżeli nakładają się w niektórych regionach obszar źródłowy i docelowy, memmove_s zapewnia, że oryginalny bajtów źródła w regionie nakładające się są kopiowane przed zastąpieniem.
Jeśli dest lub jeśli src jest wskaźnik zerowy, lub jeżeli ciąg docelowy jest zbyt mały, te funkcje Wywołaj funkcję obsługi nieprawidłowy parametr, zgodnie z opisem w Sprawdzanie poprawności parametru .Jeśli wykonanie może kontynuować, funkcje te zwracają EINVAL i errno do EINVAL.
Wymagania
Rozpoczęto wykonywanie procedury |
Wymaganego nagłówka |
---|---|
memmove_s |
<string.h> |
wmemmove_s |
<wchar.h> |
Aby uzyskać dodatkowe informacje o zgodności, zobacz zgodności we wprowadzeniu.
Przykład
// 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);
}
Dane wyjściowe
Before: 0123456789
After: 0012345789
Odpowiednik w programie .NET Framework
Zobacz też
Informacje
strncpy_s, _strncpy_s_l, wcsncpy_s, _wcsncpy_s_l, _mbsncpy_s, _mbsncpy_s_l
strncpy, _strncpy_l, wcsncpy, _wcsncpy_l, _mbsncpy, _mbsncpy_l