Päisefail:
string.hSüntaks:
void * mempcpy (void * dest, const void * src, size_t size)Argumendid:
Funktsioonil on 3 argumenti:
- dest:
- src:
- suurus:
See on mäluploki lähtepunkt, kuhu mäluplokk osutab src (2. argument) kopeeritakse. Kursor tunnistatakse kehtetuks, nii et mis tahes tüüpi mäluplokke saab kopeerida.
See on lähtemälu ploki lähtepunkt, kust mäluplokk kopeeritakse. Kursor tunnistatakse kehtetuks, nii et mis tahes tüüpi mäluplokke saab kopeerida.
See on mäluploki suurus baitides.
Kahe kursori väärtus dest ja src peaks olema selline, et kaks mäluplokki ei kattuks. Allika ja sihtkoha mäluplokkide suurus peab olema vähemalt suurus (3. argument) baiti kattuvate olukordade vältimiseks. Kui need kaks mäluplokki kattuvad, toimib memcpy () funktsioon pole määratletud. Kui on kattumise võimalus, võite kasutada nuppu memmove () raamatukogu funktsioon, kus kattuvus on hästi määratletud. memmove () funktsioon on võrreldes memcpy () funktsioon.
Väärtuse tõttu suurus, kui allikale või sihtkohale pääseb juurde nende puhvri pikkusest, siis memcpy () funktsioon pole määratletud.
The memcpy () Funktsioon ei kontrolli märgi '\ 0' lõpetamist.
Tagastusväärtused:
See funktsioon tagastab sihtkoha aadressi väärtuse dest. Nagu väärtus dest on juba saadaval, ei pea seda üheski muutujas salvestama.
Näited:
// Näide1.c# kaasata
# kaasata
int main ()
char src [] = "Tere";
char dest [13];
memcpy (dest, src, 6);
printf ("dest pärast esimest memcpy () =>% s \ n", dest);
memcpy (dest + sizeof (src) -1, "maailm!", 8);
printf ("dest pärast teist memcpy () =>% s \ n", dest);
tagastama 0;
Näites1.c oleme deklareerinud kahemärgilise massiivi src ja dest. Suurus src on 6 ja dest on 13. Kõigepealt kopeerisime 6 tähemärki „H”, „e”, „l”, „l”, „o”, „\ 0” src kuni dest (11. rida). Teises funktsioonis memcpy () kopeeriti 8 tähemärki "," w "," o "," r "," l "," d ","!',' \ 0 'kuni tähemärgini pärast viit märki (rida 15). Piltlikult võime seda esindada järgmiselt:
// Näide2.c
# kaasata
# kaasata
int main ()
typedef struct õpilane
char * nimi;
int id;
int vanus;
std;
std õpilane1; // Kuulake õpilane1 tüübist std
std õpilane2; // Kuulake õpilane2 tüübist std
// sudent1 väärtuse määramine
õpilane1.nimi = "Bamdev Ghosh";
õpilane1.id = 1105;
õpilane1.vanus = 30;
printf ("Õpilane1: \ n \ tNimi:% s \ n \ tid:% d \ n \ tage:% d \ n", õpilane1.nimi,
õpilane1.id, õpilane1.vanus);
// Kopeeri õpilane1 õpilasesse2
memcpy (& õpilane2, & õpilane1, suurusof (õpilane1));
printf ("\ n \ nPärast memcpy:");
printf ("\ n \ nÕpilane2: \ n \ tNimi:% s \ n \ tid:% d \ n \ tage:% d \ n",
õpilane2.nimi, õpilane2.id, õpilane2.vanus);
tagastama 0;
Näites2.c oleme deklareerinud kaks struktuuri õpilane1 ja õpilane2 (Read 15 ja 16). Esiteks lähtestame õpilase1 (read 19, 20, 21). Pärast seda kasutame memcpy andmete kopeerimiseks õpilane1 kuni õpilane2.
Järeldus:
Selles artiklis oleme õppinud, kuidas kasutada memcpy funktsioon. Oleme näinud, et seda funktsiooni saab kasutada mis tahes tüüpi mäluplokkide jaoks, kuid sellel funktsioonil on mõned piirangud. Niisiis, peate seda funktsiooni hoolikalt kasutama.