Come utilizzare la funzione Memcpy in lingua C?

Come utilizzare la funzione Memcpy in lingua C?
Nella funzione C lingua () viene utilizzata per copiare un blocco di memoria da una posizione a un'altra. In questo articolo, discuteremo in dettaglio come viene utilizzata la funzione Memcpy (). Quindi iniziamo.

File di intestazione:

corda.H

Sintassi:

void *mempcpy (void *dest, const void *src, size_t size)

Argomenti:

La funzione prende 3 argomenti:

  1. dest:
  2. Questo è un puntatore iniziale di un blocco di memoria in cui il blocco di memoria indicava src (2 ° argomento) verrà copiato. Il puntatore è dichiarato vuoto, quindi qualsiasi tipo di blocco di memoria può essere copiato.

  3. src:
  4. Questo è un puntatore iniziale del blocco di memoria di origine da dove verrà copiato il blocco di memoria. Il puntatore è dichiarato vuoto, quindi qualsiasi tipo di blocco di memoria può essere copiato.

  5. misurare :
  6. Questa è la dimensione del blocco di memoria in byte.

Il valore del due puntatore dest E src dovrebbe essere in modo tale che due blocchi di memoria non si sovrappongono. La dimensione dei blocchi di memoria di origine e destinazione deve essere almeno misurare (3 ° argomento) byte per evitare situazioni sovrapposte. Se i due blocchi di memoria sono sovrapposti, il comportamento del memcpy () La funzione non è definita. Quando c'è la possibilità di sovrapposizione, puoi usare il mmmove () funzione della libreria in cui la sovrapposizione è ben definita. mmmove () La funzione è più lenta rispetto a memcpy () funzione.

A causa del valore di misurare, Se si accede l'origine o la destinazione oltre la lunghezza del buffer, il comportamento del memcpy () La funzione non è definita.

IL memcpy () La funzione non controlla il carattere '\ 0'.

Valori di ritorno:

Questa funzione restituisce il valore dell'indirizzo di destinazione dest. Come valore di dest è già disponibile, quindi non è necessario archiviare in nessuna variabile.

Esempi:

//Esempio 1.C
#includere
#includere
int main ()

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);
restituzione 0;

Nell'esempio1.c Abbiamo dichiarato un array a due caratteri src E dest. La dimensione del src è 6 e il dest è 13. Innanzitutto, abbiamo copiato 6 caratteri 'H', 'e', ​​'l', 'l', 'o', '\ 0' da src A dest (Riga 11). Nella seconda funzione Memcpy () ha copiato 8 caratteri ", 'W', 'o', 'r', 'l', 'd', '!',' \ 0 'al dest dopo 5 caratteri (riga 15). Pictorialmente possiamo rappresentarlo come segue:

// Esempio2.C
#includere
#includere
int main ()

Studente struct da typedef

nome del personaggio;
int id;
Int Age;
std;
STD Student1; // dichiara studente1 di tipo std
STD Student2; // dichiara studente2 di tipo std
// Assegnazione del valore di Sudent1
Studente1.name = "Bamdev Ghosh";
Studente1.id = 1105;
Studente1.età = 30;
printf ("Student1: \ n \ tname: %s \ n \ tid: %d \ n \ tage: %d \ n", Student1.nome,
Studente1.id, studente1.età);
// Copia Student1 su Student2
Memcpy (& Student2, & Student1, Dimesof (Student1));
printf ("\ n \ nafter memcpy:");
printf ("\ n \ nstudent2: \ n \ tname: %s \ n \ tid: %d \ n \ tage: %d \ n",
Studente2.Nome, Student2.id, studente2.età);
restituzione 0;

Nell'esempio2.c Abbiamo dichiarato due strutture Studente1 E Studente2 (Riga 15 e 16). Innanzitutto, inizializziamo Student1 (riga 19, 20, 21). Dopodiché, usiamo memcpy per copiare i dati da Studente1 A Studente2.

Conclusione:

In questo articolo, abbiamo imparato a 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 attentamente.