C Programmation

Comment utiliser la fonction memcpy en langage C?

Comment utiliser la fonction memcpy en langage C?
Dans le langage C, la fonction memcpy() est utilisée pour copier un bloc de mémoire d'un emplacement à un autre. Dans cet article, nous allons discuter en détail de l'utilisation de la fonction memcpy(). 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. destination :
  2. C'est un pointeur de départ d'un bloc mémoire où le bloc mémoire pointé par src (2e argument) sera copié. Le pointeur est déclaré comme void, donc tout type de bloc mémoire peut être copié.

  3. src :
  4. Ceci est un pointeur de départ du bloc mémoire source à partir duquel le bloc mémoire sera copié. Le pointeur est déclaré comme void, donc tout type de bloc mémoire peut être copié.

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

La valeur des deux pointeurs dest et src doit être de telle sorte que deux blocs de mémoire ne se chevauchent pas. La taille des blocs 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 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() une fonction.

En raison de la valeur de Taille, si la source ou la destination est accédée au-delà de leur longueur de tampon, alors le comportement du memcpy() la fonction n'est pas définie.

le memcpy() la fonction ne vérifie pas pour terminer le caractère '\0'.

Valeurs de retour :

Cette fonction renvoie la valeur de l'adresse de destination dest. Comme la valeur de destin est déjà disponible, il n'a donc pas besoin d'être stocké dans une 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 la seconde memcpy() => %s\n",dest);
renvoie 0 ;

Dans Exemple1.c nous avons déclaré un tableau à deux caractères src et dest. La taille du src est 6 et le dest a 13 ans. Tout d'abord, nous avons copié 6 caractères 'H', 'e', ​​'l', 'l', 'o', '\0' de src à dest (Ligne 11). Dans la deuxième fonction memcpy() copié 8 caractères", 'w', 'o', 'r', 'l', 'd', '!', '\0' jusqu'au det après 5 caractères ( Ligne 15 ). En images, nous pouvons représenter cela comme suit :

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

typedef struct étudiant

char *nom;
int id;
âge entier;
std;
étudiant std1; // Déclare student1 de type std
étudiant std2; // Déclare student2 de type std
// Attribution de la valeur de sudent1
étudiant1.nom = "Bamdev Ghosh" ;
étudiant1.identifiant = 1105 ;
étudiant1.âge = 30 ;
printf("Etudiant1 :\n\tNom : %s\n\tid : %d\n\tage : %d\n",étudiant1.Nom,
étudiant1.identifiant, étudiant1.âge);
// Copie élève1 vers élève2
memcpy(&student2, &student1, sizeof(student1));
printf("\n\nAprès memcpy :");
printf("\n\nÉtudiant2 :\n\tNom : %s\n\tid : %d\n\tage : %d\n",
étudiant2.nom, étudiant2.identifiant, étudiant2.âge);
renvoie 0 ;

Dans 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 copier des données de étudiant1 à étudiant2.

Conclusion:

Dans cet article, nous avons appris à utiliser le memcpy une fonction. Nous avons vu que cette fonction peut être utilisée pour tout type de bloc mémoire mais cette fonction a quelques limitations. Donc, vous devez utiliser cette fonction avec précaution.

Meilleurs jeux à jouer avec le suivi des mains
Oculus Quest a récemment introduit l'idée géniale du suivi manuel sans contrôleurs. Avec un nombre toujours croissant de jeux et d'activités qui exécu...
Comment afficher la superposition OSD dans les applications et jeux Linux en plein écran
Jouer à des jeux en plein écran ou utiliser des applications en mode plein écran sans distraction peut vous couper des informations système pertinente...
Top 5 des cartes de capture de jeu
Nous avons tous vu et aimé des gameplays en streaming sur YouTube. PewDiePie, Jakesepticye et Markiplier ne sont que quelques-uns des meilleurs joueur...

Derniers articles sur les systèmes d'exploitation. Beaucoup de guides intéressants et de conseils utiles. Sentez-vous comme vous-même dans le monde de la technologie moderne