C Programmeerimine

Kuidas kasutada memcpy funktsiooni C keeles?

Kuidas kasutada memcpy funktsiooni C keeles?
Funktsioonis C kasutatakse mäluploki kopeerimist ühest kohast teise funktsiooni memcpy (). Selles artiklis käsitleme üksikasjalikult, kuidas funktsiooni memcpy () kasutatakse. Alustame siis.

Päisefail:

string.h

Süntaks:

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

Argumendid:

Funktsioonil on 3 argumenti:

  1. dest:
  2. 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.

  3. src:
  4. 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.

  5. suurus:
  6. 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.

Kuidas mängu Linuxis arendada
Kümme aastat tagasi ei osanud paljud Linuxi kasutajad ennustada, et nende lemmikoperatsioonisüsteem on ühel päeval populaarne kommertsvideomängude män...
Kommertsmängumootorite avatud lähtekoodiga sadamad
Tasuta, avatud lähtekoodiga ja platvormidevaheliste mängumootorite puhkusereise saab kasutada nii vanade kui ka mõnede üsna hiljutiste mängude pealkir...
Parimad Linuxi käsurea mängud
Käsurida pole Linuxi kasutamisel lihtsalt teie suurim liitlane - see võib olla ka meelelahutusallikas, sest saate seda kasutada paljude lõbusate mängu...

Viimased artiklid operatsioonisüsteemide kohta. Palju huvitavaid juhendeid ja kasulikke näpunäiteid. Tundke end kaasaegse tehnoloogia maailmas nagu oma