C programozás

A memcpy függvény használata C nyelven?

A memcpy függvény használata C nyelven?
A C nyelvben a memcpy () függvény segítségével memória blokkot másolhat egyik helyről a másikra. Ebben a cikkben részletesen megvitatjuk a memcpy () függvény használatát. Tehát kezdjük.

Fejlécfájl:

húr.h

Szintaxis:

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

Érvek:

A függvény 3 argumentumot tartalmaz:

  1. cél:
  2. Ez egy olyan memóriablokk kezdő mutatója, amelyre a memóriablokk mutat src (2. érv) másolásra kerül. A mutató érvénytelennek nyilvánul, így bármilyen típusú memóriablokk lemásolható.

  3. src:
  4. Ez a forrás memória blokk kezdő mutatója, ahonnan a memória blokkot átmásolja. A mutató érvénytelennek nyilvánul, így bármilyen típusú memóriablokk lemásolható.

  5. méret:
  6. Ez a memória blokk mérete bájtokban.

A két mutató értéke rendeltetése és src olyannak kell lennie, hogy két memóriablokk ne fedje át egymást. A forrás és a cél memóriablokkjainak méretének legalább a következőnek kell lennie: méret (3. érv) bájtok az átfedések elkerülése érdekében. Ha a két memóriablokk átfedésben van, akkor a memcpy () funkció nincs meghatározva. Ha van átfedés lehetősége, használhatja a memmove () könyvtár funkció, ahol az átfedés jól definiálható. memmove () funkció lassabb, mint memcpy () funkció.

Értéke miatt méret, ha a forráshoz vagy a célhoz pufferhosszukon túl jutunk el, akkor a memcpy () funkció nincs meghatározva.

A memcpy () A függvény nem ellenőrzi a '\ 0' karakter befejezését.

Visszatérési értékek:

Ez a függvény visszaadja a célcím értékét rend. Mivel az értéke rendeltetése már elérhető, ezért nem kell semmilyen változóban tárolni.

Példák:

// Példa1.c
#include
#include
int main ()

char src [] = "Hello";
char dest [13];
memcpy (dest, src, 6);
printf ("dest az első memcpy () =>% s \ n" után, dest);
memcpy (dest + sizeof (src) -1, "világ!", 8);
printf ("dest második memcpy () =>% s \ n" után, dest);
visszatér 0;

Az 1. példában.c két karakterből álló tömböt deklaráltunk src és rend. A méret src értéke 6 és a rendeltetése az 13. Először 6 karaktert (H), „e”, „l”, „l”, „o”, „\ 0” másoltunk src nak nek rend (11. sor). A második memcpy () függvényben 8 karakter másolt "," w "," o "," r "," l "," d ","!',' \ 0 'a célig 5 karakter után (15. sor). Képileg ezt a következőképpen tudjuk ábrázolni:

// 2. példa.c
#include
#include
int main ()

typedef struct hallgató

char * név;
int id;
int kor;
std;
std hallgató1; // Nyilvánítsd a std típusú hallgatót1
std student2; // Nyilvánítsa a st2 típusú hallgatót
// A sudent1 értékének hozzárendelése
tanuló1.név = "Bamdev Ghosh";
tanuló1.id = 1105;
tanuló1.életkor = 30;
printf ("Student1: \ n \ tNév:% s \ n \ tid:% d \ n \ tage:% d \ n", student1.név,
tanuló1.id, hallgató1.kor);
// A student1 másolása a student2-re
memcpy (& student2, & student1, sizeof (student1));
printf ("\ n \ nA memcpy után:");
printf ("\ n \ nStudent2: \ n \ tNév:% s \ n \ tid:% d \ n \ tage:% d \ n",
tanuló2.név, tanuló2.id, hallgató2.kor);
visszatér 0;

A 2. példában.c két struktúrát deklaráltunk tanuló1 és tanuló2 (15. és 16. sor). Először inicializáljuk a hallgatót1 (19., 20., 21. sor). Ezt követően használjuk memcpy hogy adatokat másoljon onnan tanuló1 nak nek tanuló2.

Következtetés:

Ebben a cikkben megtanultuk a memcpy funkció. Láttuk, hogy ez a funkció bármilyen típusú memóriablokkhoz használható, de ennek a funkciónak vannak bizonyos korlátai. Tehát óvatosan kell használnia ezt a funkciót.

Telepítse a legújabb OpenRA stratégiai játékot az Ubuntu Linux rendszerre
Az OpenRA egy ingyenes / ingyenes valós idejű stratégiai játékmotor, amely újjáépíti a korai Westwood játékokat, mint például a klasszikus Command & C...
Telepítse a legújabb Dolphin Emulator for Gamecube & Wii szoftvert Linuxra
A Dolphin Emulator segítségével a kiválasztott Gamecube & Wii játékokat játszhatja Linux személyi számítógépeken (PC). Mivel a Dolphin Emulator szaba...
A GameConqueror Cheat Engine használata Linux alatt
A cikk tartalmaz egy útmutatót a GameConqueror csaló motor Linux alatt történő használatáról. Sok olyan felhasználó, aki Windows-on játszik játékot, g...

Legfrissebb cikkek az operációs rendszerekről. Sok érdekes útmutató és hasznos tipp. Érezd magad a modern technológiák világában