Header-Datei:
Schnur.haSyntax:
void * memppcpy (void *dest, const void *src, size_t size)Argumente:
Die Funktion benötigt 3 Argumente:
- Ziel:
- src:
- Größe :
Dies ist ein Startzeiger eines Speicherblocks, auf den der Speicherblock mit zeigt src (2. Argument) wird kopiert. Der Zeiger wird als void deklariert, sodass jede Art von Speicherblock kopiert werden kann.
Dies ist ein Startzeiger des Quellspeicherblocks, von dem der Speicherblock kopiert wird. Der Zeiger wird als void deklariert, sodass jede Art von Speicherblock kopiert werden kann.
Dies ist die Größe des Speicherblocks in Bytes.
Der Wert der beiden Zeiger dest und src sollte so sein, dass sich zwei Speicherblöcke nicht überlappen. Die Größe der Speicherblöcke von Quelle und Ziel muss mindestens Größe (3. Argument) Bytes, um überlappende Situationen zu vermeiden. Überlappen sich die beiden Speicherblöcke, dann ist das Verhalten der of memcpy() Funktion ist undefiniert. Bei Überschneidungen können Sie die memmove() Bibliotheksfunktion, bei der Überlappungen gut definiert sind. memmove() Funktion ist langsamer als memcpy() Funktion.
Aufgrund des Wertes von Größe, Wenn auf die Quelle oder das Ziel über ihre Pufferlänge hinaus zugegriffen wird, wird das Verhalten der of memcpy() Funktion ist undefiniert.
Das memcpy() Funktion prüft nicht, um das Zeichen '\0' zu beenden.
Rückgabewerte:
Diese Funktion gibt den Wert der Zieladresse zurück dest. Als Wert von dest ist bereits verfügbar, muss also nicht in einer Variablen gespeichert werden.
Beispiele:
//Beispiel 1.c#einschließen
#einschließen
int main()
char src[] = "Hallo";
char dest[13];
memcpy(ziel,src,6);
printf("Ziel nach erstem memcpy() => %s\n",Ziel);
memcpy(dest+sizeof(src)-1," world!",8);
printf("Ziel nach zweitem memcpy() => %s\n",Ziel);
0 zurückgeben;
In Beispiel1.c Wir haben ein zweistelliges Array deklariert src und dest. Die grosse von src ist 6 und die dest ist 13. Zuerst kopierten wir 6 Zeichen 'H', 'e', 'l', 'l', 'o', '\0' von src zu dest ( Zeile 11 ). In der zweiten memcpy() Funktion kopiert 8 Zeichen", 'w', 'o', 'r', 'l', 'd', '!', '\0' zum Ziel nach 5 Zeichen ( Zeile 15 ). Bildlich können wir dies wie folgt darstellen:
//Beispiel2.c
#einschließen
#einschließen
int main()
typedef struct student
Zeichen *Name;
int-ID;
int Alter;
std;
Standardschüler1; // Deklariere student1 vom Typ std
Std-Student2; // Deklariere student2 vom Typ std
// Zuweisen des Wertes von sudent1
Schüler1.name = "Bamdev Ghosh";
Schüler1.id = 1105;
Schüler1.Alter = 30;
printf("Student1:\n\tName : %s\n\tid : %d\n\tage : %d\n",student1.Name,
Schüler1.id,student1.Alter);
// kopiere student1 nach student2
memcpy(&student2, &student1, sizeof(student1));
printf("\n\nNach memcpy:");
printf("\n\nSchüler2:\n\tName : %s\n\tid : %d\n\tage : %d\n",
student2.name,student2.id,student2.Alter);
0 zurückgeben;
In Beispiel2.c wir haben zwei Strukturen deklariert Schüler1 und student2 (Linie 15 und 16). Zuerst initialisieren wir student1 (Zeile 19, 20, 21). Danach verwenden wir memcpy Daten kopieren von Schüler1 zu student2.
Fazit:
In diesem Artikel haben wir gelernt, wie man die 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.