Comment utiliser la fonction memcpy dans le langage C?

Comment utiliser la fonction memcpy dans le langage C?
Dans le langage C, la fonction memcpy () est utilisée pour copier un bloc de mémoire d'un endroit à un autre. Dans cet article, nous allons discuter en détail de la façon dont la fonction memcpy () est utilisée. Alors, commençons.

En tête de fichier:

chaîne.H

Syntaxe:

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

Arguments:

La fonction prend 3 arguments:

  1. dest:
  2. Ceci est un pointeur de départ d'un bloc de mémoire où le bloc de mémoire pointé de SRC (2ème argument) sera copié. Le pointeur est déclaré vide, donc tout type de bloc de mémoire peut être copié.

  3. SRC:
  4. Ceci est un pointeur de départ du bloc de mémoire source d'où le bloc de mémoire sera copié. Le pointeur est déclaré vide, donc tout type de bloc de mémoire peut être copié.

  5. taille :
  6. C'est la taille du bloc de mémoire en octets.

La valeur des deux pointeurs destruction et SRC devrait être de telle manière que deux blocs de mémoire ne se chevauchent pas. La taille des blocs de mémoire de la source et de la destination doit être au moins de taille (3e argument) octets pour éviter les situations de chevauchement. Si les deux blocs de mémoire se chevauchent, le comportement du memcpy () La fonction n'est pas définie. Lorsqu'il y a une possibilité de chevauchement, vous pouvez utiliser le memmove () Fonction de bibliothèque où le chevauchement est bien défini. memmove () La fonction est plus lente par rapport à memcpy () fonction.

En raison de la valeur de taille, Si la source ou la destination est accessible au-delà de sa longueur de tampon, le comportement du memcpy () La fonction n'est pas définie.

Le memcpy () La fonction ne vérifie pas le caractère «\ 0».

Valeurs de retour:

Cette fonction renvoie la valeur de l'adresse de destination destruction. Comme la valeur de destruction est déjà disponible, il n'a pas besoin de stocker dans aucune variable.

Exemples:

//Exemple 1.c
#inclure
#inclure
int main()

char src [] = "Bonjour";
char dest [13];
memcpy (dest, src, 6);
printf ("dest après le premier memcpy () =>% s \ n", dest);
memcpy (dest + sizeof (src) -1, "monde!", 8);
printf ("dest après deuxième memcpy () =>% s \ n", dest);
retour 0;

Dans l'exemple1.c Nous avons déclaré un tableau à deux caractères SRC et destruction. La taille du SRC est 6 et le destruction est 13. Tout d'abord, nous avons copié 6 caractères 'h', 'e', ​​'l', 'l', 'o', '\ 0' de SRC pour destruction (Ligne 11). Dans la deuxième fonction memcpy () a copié 8 caractères ", 'w', 'o', 'r', 'l', 'd', '!',' \ 0 'au dest après 5 caractères (ligne 15). Pictorial, nous pouvons le représenter comme suit:

// Exemple2.c
#inclure
#inclure
int main()

Étudiant Struct Typedef

nom char *;
int id;
en âge;
std;
STD Student1; // Déclarer l'étudiant1 de type std
STD Student2; // Déclarer l'étudiant2 de type std
// attribuant la valeur de Sudent1
étudiant1.name = "bamdev ghosh";
étudiant1.id = 1105;
étudiant1.âge = 30;
printf ("Student1: \ n \ tname:% s \ n \ tid:% d \ n \ tage:% d \ n", étudiant1.nom,
étudiant1.id, étudiant1.âge);
// Copier Student1 à Student2
Memcpy (& Student2, & Student1, Sizeof (Student1));
printf ("\ n \ nafter memcpy:");
printf ("\ n \ nstudent2: \ n \ tname:% s \ n \ tid:% d \ n \ tage:% d \ n",
étudiant2.Nom, Student2.id, étudiant2.âge);
retour 0;

Dans l'exemple2.c Nous avons déclaré deux structures étudiant1 et étudiant2 (Ligne 15 et 16). Tout d'abord, nous initialisons Student1 (ligne 19, 20, 21). Après cela, nous utilisons memcpy pour copier les données de étudiant1 pour étudiant2.

Conclusion:

Dans cet article, nous avons appris à utiliser le memcpy fonction. Nous avons vu que cette fonction peut être utilisée pour tout type de bloc de mémoire, mais cette fonction a certaines limites. Donc, vous devez utiliser attentivement cette fonction.