File di intestazione:
corda.hSintassi:
void * mempcpy (void *dest, const void *src, size_t size)Argomenti:
La funzione accetta 3 argomenti:
- destinazione:
- src:
- dimensione :
Questo è un puntatore iniziale di un blocco di memoria in cui il blocco di memoria puntato da src (2° argomento) verrà copiato. Il puntatore viene dichiarato void, quindi qualsiasi tipo di blocco di memoria può essere copiato.
Questo è un puntatore iniziale del blocco di memoria di origine da cui verrà copiato il blocco di memoria. Il puntatore viene dichiarato void, quindi qualsiasi tipo di blocco di memoria può essere copiato.
Questa è la dimensione del blocco di memoria in byte.
Il valore dei due puntatori destinazione e src dovrebbe essere in modo tale che due blocchi di memoria non si sovrappongano. La dimensione dei blocchi di memoria di origine e destinazione deve essere almeno di dimensione (3° argomento) byte per evitare situazioni di sovrapposizione. Se i due blocchi di memoria sono sovrapposti allora il comportamento del memcpy() la funzione è indefinita. Quando esiste la possibilità di sovrapposizione, è possibile utilizzare il memove() funzione di libreria in cui la sovrapposizione è ben definita. memove() la funzione è più lenta rispetto a memcpy() funzione.
A causa del valore di dimensione, se si accede alla sorgente o alla destinazione oltre la loro lunghezza del buffer, allora il comportamento del memcpy() la funzione è indefinita.
Il memcpy() la funzione non controlla per terminare il carattere '\0'.
Valori restituiti:
Questa funzione restituisce il valore dell'indirizzo di destinazione destinazione. Come il valore di destinazione è già disponibile, quindi non deve essere memorizzato in nessuna variabile.
Esempi:
//Esempio 1.c#includere
#includere
intero principale()
char src[] = "Ciao";
char dest[13];
memcpy(dest,src,6);
printf("dest dopo il primo memcpy() => %s\n",dest);
memcpy(dest+sizeof(src)-1," world!",8);
printf("dest dopo il secondo memcpy() => %s\n",dest);
restituisce 0;
Nell'esempio1.c abbiamo dichiarato un array di due caratteri src e destinazione. La dimensione del src è 6 e il destinazione è 13. Innanzitutto, abbiamo copiato 6 caratteri 'H', 'e', 'l', 'l', 'o', '\0' da src per destinazione ( Riga 11 ). Nella seconda funzione memcpy() ha copiato 8 caratteri", 'w', 'o', 'r', 'l', 'd', '!', '\0' alla destinazione dopo 5 caratteri ( Riga 15 ). Pittoricamente possiamo rappresentarlo come segue:
//Esempio2.c
#includere
#includere
intero principale()
typedef struct studente
nome del personaggio;
int id;
int età;
std;
studente standard1; // Dichiara student1 di tipo std
studente standard2; // Dichiara student2 di tipo std
// Assegnazione del valore di sudent1
studente1.nome = "Bamdev Ghosh";
studente1.id = 1105;
studente1.età = 30;
printf("Studente1:\n\tNome : %s\n\tid : %d\n\taggio : %d\n",studente1.nome,
studente1.ID,studente1.età);
// Copia studente1 in studente2
memcpy(&student2, &student1, sizeof(student1));
printf("\n\nDopo memcpy:");
printf("\n\nStudente2:\n\tNome : %s\n\tid : %d\n\taggio : %d\n",
studente2.nome,studente2.ID,studente2.età);
restituisce 0;
Nell'esempio2.c abbiamo dichiarato due strutture studente1 e studente2 (Linea 15 e 16). Innanzitutto, inizializziamo student1 (riga 19, 20, 21). Dopodiché, usiamo memcpy copiare i dati da data studente1 per studente2.
Conclusione:
In questo articolo abbiamo imparato come usare il memcpy funzione. Abbiamo visto che questa funzione può essere utilizzata per qualsiasi tipo di blocco di memoria ma questa funzione ha alcune limitazioni. Quindi, devi usare questa funzione con attenzione.