Fonctionnement de memcpy
MEMCPY copie les octets de données par octet du tableau source vers le tableau de destination. Cette copie des données est threadsafe. Le processus de copie des données peut échouer si la taille donnée n'est pas exacte pour le tableau de destination. À un moment donné, les comportements de la fonction memcpy () ne sont pas définis en fonction de la condition. Parfois, les objets se chevauchent et il y a un pointeur nul à l'un des deux emplacements, soit source ou destination.
Syntaxe de memcpy
# MEMCPY (VOID Destination, const Void Source, Nombre de taille);Ici, la destination et la source sont les emplacements d'où le contenu est copié et à quel endroit ils sont copiés. Le troisième paramètre montre le nombre d'octets qui doivent être copiés. La valeur de retour de cette fonction construite_in est l'emplacement du tableau de destination.
Implémentation de la fonction memcpy ()
Exemple 1
Cet exemple contient la copie des données de la source à la partie de destination. Tout d'abord, nous devons utiliser deux bibliothèques et un fichier d'en-tête dans notre code source. L'une est la bibliothèque iOStream qui permet Cin et Cout dans les programmes C ++ et utilise efficacement la participation des utilisateurs. Mais, dans ce programme, nous n'avons qu'à afficher les valeurs résultantes; c'est pourquoi nous devons le mentionner. La deuxième bibliothèque utilisée est la bibliothèque qui permet la copie des données de la source à la destination. Cette copie et allocation de la mémoire sont effectuées via une bibliothèque nommée CString. Donc, pour faire le programme dans un état de travail, nous inclurons d'abord ces deux bibliothèques dans le fichier d'en-tête.
#inclureToutes les fonctionnalités de chaîne ou de tableau de caractères sont effectuées à l'aide d'une bibliothèque cString. Dans le programme principal, deux tableaux de caractères sont initialisés. L'un est un tableau source, et l'autre est le tableau de destination. Ces deux tableaux sont remplis de données que nous devons copier. Dans ce code, nous copierons toutes les données d'un tableau à un autre. Tous les octets seront dupliqués dans le tableau de destination car les données sont copiées octet par octet. Ici, les deux tableaux ont des données.
Il pourrait y avoir une possibilité, lorsque nous copierons les octets d'un tableau à un autre et lorsque le tableau de destination est vide. Ces types d'exemples seront discutés plus tard dans l'article.
Pour l'instant, nous utiliserons la fonction MEMCPY pour prendre les tableaux de source et de destination comme paramètre et la taille de la source à copier facilement.
MEMCPY (destination, source, sizeof (source));Le troisième paramètre déterminera la taille du tableau des caractères source. Ensuite, utilisez l'instruction COUT pour afficher le contenu dans le tableau de destination.
Nous utilisons toujours un compilateur pour compiler. Ensuite, exécutez le code, donc nous utilisons g++. Le «-o» enregistrera la sortie du code présent dans le fichier d'entrée.
$ g ++ -o mem mem.cLe tableau source contient «l'indice linux» à partir de la valeur résultante, et la destination a «l'article». Maintenant, le tableau de destination contient les données du tableau source.
Exemple 2
Cet exemple fonctionnera sur le même phénomène, mais nous copierons les données de la source à la destination jusqu'à une limite spécifique. Par exemple, le tableau de caractères source contient les mêmes données que «Linux Indice», et le tableau de destination a «Memcpy». Nous devons donc copier les données de la destination à la source de 4 octets. À cette fin, nous mentionnerons le nombre d'octets comme paramètre. Lors de la copie du nombre spécifique d'octets, les données du tableau de destination seront remplacées par celle du fichier source.
MEMCPY (destination, source, 4);Ici, nous n'avons pas besoin de calculer la taille du tableau source. Seul un nombre doit être mentionné où nous voulons copier des données.
Vous verrez que les 4 octets de la source sont copiés à la destination. Par exemple, «Linux» à partir de «Linux Hint» est extrait et copié dans le tableau de destination. Tandis que, dans le tableau de destination, les 4 premiers octets sont supprimés et sont remplacés par les octets du tableau source. Le reste des octets dans le tableau de destination restera le même.
Exemple 3
Dans cet exemple, nous aurons des valeurs entières dans le tableau source. Cette fois, un tableau source de taille spécifique est défini pour stocker des données jusqu'à une certaine mesure. Comme nous l'avons mentionné plus tôt, les données de la source seront copiées maintenant dans le tableau vide. Ensuite, nous déclarerons un tableau de destination d'une taille spécifique. Dans l'exemple suivant, nous avons mentionné la taille du tableau comme 7, ce qui signifie que nous copierons 7 entiers dans le tableau de destination:
Int destination [7];Maintenant, nous utiliserons la fonction MEMCPY pour copier les valeurs entières de 7 nombres pour éviter de dupliquer les données entières du fichier source. Ici, nous utiliserons la destination, le tableau source et la taille totale du tableau entier multiplié par 7 pour calculer la taille réelle:
# Memcpy (destination, source, sizeof (int) * 7);Ensuite, nous afficherons des données à l'aide d'une boucle «pour», contrairement aux exemples précédents. Comme chaque nombre est séparé par l'indice d'un tableau, donc chaque index contient une valeur distincte. A pour la boucle continuera d'itréter jusqu'à la 7e position. Maintenant, enregistrez le code pour la compilation.
En conséquence, 7 entiers sont copiés. Cela contient un total de 10 octets:
Exemple 5
Dans le dernier exemple, nous avons copié les valeurs entières dans le tableau vide. Ici, nous copierons les caractères du tableau de source de caractères au tableau de caractères de destination vide.
Tout d'abord, initialisez le tableau source avec la chaîne. Tout en introduisant le tableau des caractères de destination, déclarez uniquement la taille du tableau et le maintenez vide. Appliquez la même fonction MEMCPY pour copier le contenu du tableau source dans le fichier de destination. Nous avons appliqué une limite pour copier les données, comme nous l'avons fait auparavant. Nous voulons donc transférer des données de 9 octets, car nous avons pris la taille du tableau de destination à 10.
MEMCPY (destination, source, sizeof (char) * 9);Au fur et à mesure que la taille est appliquée au tableau, nous utiliserons une boucle pour afficher le contenu du tableau de destination des caractères. Cela affichera les valeurs présentes dans chaque index du tableau de destination. Les données de la source jusqu'au 9e octet, y compris l'espace, sont présentées ci-dessous:
Conclusion
L'article «C ++ MEMCPY» est une source de connaissances concernant la fonction intégrée dans le langage de programmation C ++ qui traite de la copie des données d'un tableau à un autre tableau. Il existe de nombreuses possibilités dans la copie des données d'un tableau deux un autre. Ceux-ci sont expliqués à l'aide d'exemples pour supprimer toute ambiguïté concernant l'utilisation de la fonction memcpy (). Nous espérons que vous avez trouvé cet article utile. Consultez les autres articles sur les conseils pour plus de conseils et de tutoriels.