memmove_s, wmemmove_s
Sposta un buffer a un altro.queste sono versioni di memmove, wmemmove con i miglioramenti della sicurezza come descritto in Funzionalità di sicurezza in 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
);
Parametri
dest
oggetto di destinazione.numberOfElements
Dimensione del buffer di destinazione.src
oggetto di origine.count
Numero di byte (memmove_s) o caratteri (wmemmove_s) per copiare.
Valore restituito
Zero in caso di esito positivo; un codice di errore in caso di errore
condizioni di errore
dest |
numberOfElements |
src |
Valore restituito |
Contenuto di dest |
---|---|---|---|---|
NULL |
qualsiasi |
qualsiasi |
EINVAL |
non modificato |
qualsiasi |
qualsiasi |
NULL |
EINVAL |
non modificato |
qualsiasi |
< count |
qualsiasi |
ERANGE |
non modificato |
Note
copie count byte di caratteri da src in dest*.* Se alcune aree dell'area di origine e della sovrapposizione di destinazione, memmove_s garantisce che i byte di origine originale nell'area di sovrapposizione vengono copiati prima di essere sovrascritto.
se dest oppure src è un puntatore null, o se la stringa di destinazione è troppo piccola, queste funzioni richiamare un gestore non valido di parametro, come descritto in Convalida dei parametri .Se l'esecuzione è consentita per continuare, ritorno di queste funzioni EINVAL e set errno in EINVAL.
Requisiti
routine |
Intestazione di associazione |
---|---|
memmove_s |
<string.h> |
wmemmove_s |
<wchar.h> |
per informazioni di compatibilità aggiuntive, vedere compatibilità nell'introduzione.
Esempio
// 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);
}
Output
Before: 0123456789
After: 0012345789
Equivalente .NET Framework
Vedere anche
Riferimenti
strncpy_s, _strncpy_s_l, wcsncpy_s, _wcsncpy_s_l, _mbsncpy_s, _mbsncpy_s_l
strncpy, _strncpy_l, wcsncpy, _wcsncpy_l, _mbsncpy, _mbsncpy_l