So verwenden Sie die Memcpy -Funktion in der C -Sprache?

So verwenden Sie die Memcpy -Funktion in der C -Sprache?
In der C -Sprachfunktion C Language Memcpy () wird ein Speicherblock von einem Ort zum anderen kopiert. In diesem Artikel werden wir detailliert darüber diskutieren, wie die Funktion memcpy () verwendet wird. Also lasst uns anfangen.

Header-Datei:

Saite.H

Syntax:

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

Argumente:

Die Funktion dauert 3 Argumente:

  1. Ziel:
  2. Dies ist ein Startzeiger eines Speicherblocks src (2. Argument) wird kopiert. Der Zeiger wird als nichtig erklärt, sodass jeder Art von Speicherblock kopiert werden kann.

  3. SRC:
  4. Dies ist ein Startzeiger des Quellspeicherblocks, von dem der Speicherblock kopiert wird. Der Zeiger wird als nichtig erklärt, sodass jeder Art von Speicherblock kopiert werden kann.

  5. Größe :
  6. Dies ist die Größe des Speicherblocks in Bytes.

Der Wert des beiden Zeigers Ziel Und src sollte so sein, dass sich zwei Speicherblöcke nicht überlappen. Die Größe der Speicherblöcke von Quelle und Ziel muss mindestens von sein Größe (3. Argument) Bytes, um überlappende Situationen zu vermeiden. Wenn die beiden Speicherblöcke überlappt werden, ist das Verhalten der memcpy () Funktion ist undefiniert. Wenn es eine Möglichkeit gibt, sich zu überlappen, können Sie die verwenden memmove () Bibliotheksfunktion, bei der sich überlappend gut definiert ist. memmove () Funktion ist langsamer im Vergleich zu memcpy () Funktion.

Aufgrund des Wertes von Größe, Wenn auf die Quelle oder das Ziel über ihre Pufferlänge hinausgerufen wird, ist das Verhalten der memcpy () Funktion ist undefiniert.

Der memcpy () Die Funktion prüft nicht, ob das Zeichen des '\ 0' beendet wird.

Rückgabewerte:

Diese Funktion gibt den Wert der Zieladresse zurück Ziel. Als Wert von Ziel ist bereits verfügbar, so dass es in keiner Variablen speichern muss.

Beispiele:

//Beispiel 1.C
#enthalten
#enthalten
int main ()

char src [] = "Hallo";
Char dest [13];
memcpy (dest, src, 6);
printf ("dest nach First memcpy () => %s \ n", dest);
memcpy (dest+sizeof (SRC) -1, "Welt!", 8);
printf ("dest nach Second memcpy () => %s \ n", dest);
Rückkehr 0;

In Beispiel1.C Wir haben ein Array mit zwei Zeichen deklariert src Und Ziel. Die grosse von src ist 6 und die Ziel ist 13. Zuerst haben wir 6 Zeichen 'H', 'E', 'L', 'L', 'O', '\ 0' kopiert src Zu Ziel (Zeile 11). In der zweiten Memcpy () -Funktion kopierte 8 Zeichen ", 'w', 'o', 'r', 'l', 'd', ''!',' \ 0 'zum Dest nach 5 Zeichen (Zeile 15). Bildend können wir dies wie folgt darstellen:

// Beispiel2.C
#enthalten
#enthalten
int main ()

Typedef Struct Student

Char *Name;
int id;
int Alter;
std;
STD Student1; // Student1 vom Typ STD deklarieren
STD Student2; // Student2 vom Typ STD deklarieren
// Zuweisen des Wertes von Sudent1
Student1.name = "bamdev ghosh";
Student1.id = 1105;
Student1.Alter = 30;
printf ("student1: \ n \ tName: %s \ n \ tid: %d \ n \ tage: %d \ n", student1.Name,
Student1.ID, Student1.Alter);
// Student1 nach Student2 kopieren
memcpy (& student2, & student1, sizeof (student1));
printf ("\ n \ nafter memcpy:");
printf ("\ n \ nstudent2: \ n \ tName: %s \ n \ tid: %d \ n \ tage: %d \ n",
Student2.Name, Student2.ID, Student2.Alter);
Rückkehr 0;

In Beispiel2.c Wir haben zwei Struktur deklariert Student1 Und Student2 (Zeile 15 und 16). Zunächst initialisieren wir Student1 (Zeile 19, 20, 21). Danach verwenden wir memcpy Daten von kopieren von Student1 Zu Student2.

Abschluss:

In diesem Artikel haben wir gelernt, wie man das benutzt memcpy Funktion. Wir haben gesehen, dass diese Funktion für jede Art von Speicherblock verwendet werden kann, aber diese Funktion hat einige Einschränkungen. Sie müssen diese Funktion also sorgfältig verwenden.