Hvordan bruke memcpy -funksjon på C -språk?

Hvordan bruke memcpy -funksjon på C -språk?
I C Language Memcpy () brukes funksjonen til å kopiere en minneblokk fra et sted til et annet. I denne artikkelen skal vi diskutere i detalj hvordan memcpy () -funksjonen brukes. Så la oss komme i gang.

Headerfil:

streng.h

Syntaks:

void *mempcpy (void *dest, const void *src, størrelse_t størrelse)

Argumenter:

Funksjonen tar 3 argumenter:

  1. dest:
  2. Dette er en startpeker for en minneblokk der minneblokken peker på src (2. argument) vil bli kopiert. Pekeren er deklarert som ugyldig, slik at enhver type minneblokk kan kopieres.

  3. SRC:
  4. Dette er en startpeker for kildeminneblokken der minneblokken vil bli kopiert. Pekeren er deklarert som ugyldig, slik at enhver type minneblokk kan kopieres.

  5. størrelse:
  6. Dette er størrelsen på minneblokken i byte.

Verdien av de to pekeren DEST og src skal være på en slik måte at to minneblokker ikke overlapper hverandre. Størrelsen på minneblokker med kilde og destinasjon må være minst av størrelse (3. argument) byte for å unngå overlappende situasjoner. Hvis de to minneblokkene er overlappet, så er oppførselen til memcpy () Funksjonen er udefinert. Når det er en mulighet for overlapping, kan du bruke Memmove () Bibliotekfunksjon der overlapping er godt definert. Memmove () funksjonen er tregere sammenlignet med memcpy () funksjon.

På grunn av verdien av størrelse, Hvis kilden eller destinasjonen er tilgjengelig utover bufferlengden deres, så er oppførselen til memcpy () Funksjonen er udefinert.

De memcpy () funksjonen sjekker ikke for å avslutte '\ 0' tegn.

Returverdier:

Denne funksjonen returnerer verdien av destinasjonsadressen DEST. Som verdien av DEST er allerede tilgjengelig, den trenger ikke å lagre i noen variabel.

Eksempler:

// Eksempel1.c
#inkludere
#inkludere
int main ()

char src [] = "hei";
Char dest [13];
MEMCPY (DEST, SRC, 6);
printf ("dest etter første memcpy () => %s \ n", dest);
memcpy (dest+sizeof (src) -1, "World!", 8);
printf ("dest etter andre memcpy () => %s \ n", dest);
retur 0;

I eksempel1.C Vi har erklært to-karakter-matrise src og DEST. Størrelsen på src er 6 og DEST er 13. Først kopierte vi 6 tegn 'H', 'E', 'L', 'L', 'O', '\ 0' fra src til DEST (Linje 11). I den andre memcpy () funksjonen kopierte 8 tegn ", 'w', 'o', 'r', 'l', 'd', '!',' \ 0 'til dest etter 5 tegn (linje 15). Bildelig kan vi representere dette som følger:

// Eksempel2.c
#inkludere
#inkludere
int main ()

typedef struct student

char *navn;
int id;
int alder;
STD;
STD Student1; // erklære student1 av typen std
STD Student2; // erklære student2 av typen std
// tilordne verdien av sudent1
Student1.name = "Bamdev Ghosh";
Student1.id = 1105;
Student1.Alder = 30;
printf ("student1: \ n \ tname: %s \ n \ tid: %d \ n \ tage: %d \ n", student1.Navn,
Student1.id, student1.alder);
// Kopier Student1 til Student2
MEMCPY (& Student2, & Student1, SizeOf (Student1));
printf ("\ n \ nafter memcpy:");
printf ("\ n \ nstudent2: \ n \ tname: %s \ n \ tid: %d \ n \ tage: %d \ n",
Student2.Navn, Student2.id, student2.alder);
retur 0;

I eksempel2.C Vi har erklært to strukturer Student1 og Student2 (Linje 15 og 16). Først initialiserer vi Student1 (linje 19, 20, 21). Etter det bruker vi memcpy å kopiere data fra Student1 til Student2.

Konklusjon:

I denne artikkelen har vi lært hvordan vi bruker memcpy funksjon. Vi har sett at denne funksjonen kan brukes til alle typer minneblokk, men denne funksjonen har noen begrensninger. Så du må bruke denne funksjonen nøye.