C programavimas

Kaip naudotis memcpy funkcija C kalba?

Kaip naudotis memcpy funkcija C kalba?
C kalboje memcpy () funkcija naudojama atminties blokui nukopijuoti iš vienos vietos į kitą. Šiame straipsnyje mes išsamiai aptarsime, kaip naudojama memcpy () funkcija. Taigi, pradėkime.

Antraštės failas:

stygos.h

Sintaksė:

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

Argumentai:

Funkcijoje yra 3 argumentai:

  1. pask:
  2. Tai yra atminties bloko, į kurį nukreiptas atminties blokas, pradinis žymeklis src (2 argumentas) bus nukopijuotas. Rodyklė paskelbta negaliojančia, todėl galima nukopijuoti bet kokio tipo atminties bloką.

  3. src:
  4. Tai yra šaltinio atminties bloko pradinis žymeklis, iš kurio bus nukopijuotas atminties blokas. Rodyklė paskelbta negaliojančia, todėl galima nukopijuoti bet kokio tipo atminties bloką.

  5. dydis:
  6. Tai yra atminties bloko dydis baitais.

Dviejų rodyklių vertė pask ir src turėtų būti taip, kad du atminties blokai nesutaptų. Šaltinio ir paskirties vietos atminties blokų dydis turi būti bent dydžio (3 argumentas) baitai, kad būtų išvengta situacijų sutapimo. Jei abu atminties blokai sutampa, tada memcpy () funkcija nėra apibrėžta. Kai yra galimybė sutapti, galite naudoti memmove () bibliotekos funkcija, kai sutapimas yra gerai apibrėžtas. memmove () funkcija yra lėtesnė, palyginti su memcpy () funkcija.

Dėl vertės dydžio, jei prie šaltinio ar paskirties vietos pasiekiama ilgesnė nei jų buferio ilgis, tada memcpy () funkcija nėra apibrėžta.

The memcpy () funkcija netikrina, ar baigti simbolį „\ 0“.

Grąžinimo vertės:

Ši funkcija grąžina paskirties adreso vertę pask. Kaip vertė pask jau yra, todėl jo nereikia saugoti jokiame kintamajame.

Pavyzdžiai:

// 1 pavyzdys.c
# įtraukti
# įtraukti
int main ()

char src [] = "Sveiki";
char dest [13];
memcpy (dest, src, 6);
printf ("dest po pirmo memcpy () =>% s \ n", dest);
memcpy (dest + sizeof (src) -1, "pasaulis!", 8);
printf ("dest po antro memcpy () =>% s \ n", dest);
grąžinti 0;

1 pavyzdyje.c mes paskelbėme dviejų simbolių masyvą src ir pask. Dydis src yra 6 ir pask yra 13. Pirma, mes nukopijavome 6 simbolius „H“, „e“, „l“, „l“, „o“, „\ 0“ iš src į pask (11 eilutė). Antroje memcpy () funkcija nukopijavo 8 simbolius "," w "," o "," r "," l "," d ","!"," \ 0 "iki 5 simbolių (15 eilutė). Paveikslėlyje mes galime tai pavaizduoti taip:

// 2 pavyzdys.c
# įtraukti
# įtraukti
int main ()

typedef struct studentas

char * vardas;
int id;
int amžius;
std;
std studentas1; // Paskelbti studento1 tipo standartą
std studentas2; // Paskelbti studento2 tipo standartą
// Sudent1 reikšmės priskyrimas
studentas1.vardas = "Bamdev Ghosh";
studentas1.id = 1105;
studentas1.amžius = 30;
printf ("Student1: \ n \ tVardas:% s \ n \ tid:% d \ n \ tage:% d \ n", studentas1.vardas,
studentas1.id, studentas1.amžius);
// Kopijuoti studentą1 į studentą2
memcpy (& studentas2, & studentas1, dydisof (studentas1));
printf ("\ n \ nPo memcpy:");
printf ("\ n \ nStudentas2: \ n \ tPavadinimas:% s \ n \ tid:% d \ n \ tage:% d \ n",
studentas2.vardas, studentas2.id, studentas2.amžius);
grąžinti 0;

2 pavyzdyje.c mes paskelbėme dvi struktūras studentas1 ir studentas2 (15 ir 16 eilutės). Pirma, inicijuojame studentą1 (19, 20, 21 eilutės). Po to mes naudojame memcpy kopijuoti duomenis iš studentas1 į studentas2.

Išvada:

Šiame straipsnyje mes sužinojome, kaip naudoti memcpy funkcija. Mes matėme, kad šią funkciją galima naudoti bet kokio tipo atminties blokui, tačiau ši funkcija turi tam tikrų apribojimų. Taigi, jūs turite atidžiai naudotis šia funkcija.

Kaip pakeisti pelės žymeklio ir žymeklio dydį, spalvą ir schemą sistemoje „Windows 10“
„Windows 10“ pelės žymeklis ir žymeklis yra labai svarbūs operacinės sistemos aspektai. Tai galima pasakyti ir apie kitas operacines sistemas, taigi, ...
Nemokami ir atvirojo kodo žaidimų varikliai, skirti kurti „Linux“ žaidimus
Šiame straipsnyje bus pateiktas nemokamų ir atvirojo kodo žaidimų variklių, kurie gali būti naudojami kuriant 2D ir 3D žaidimus „Linux“, sąrašas. Toki...
„Tomb Raider for Linux“ pamoka
„Tomb Raider“ šešėlis yra dvyliktas „Tomb Raider“ serijos priedas - veiksmo ir nuotykių žaidimų franšizė, sukurta „Eidos Montreal“. Žaidimą kritikai i...

Naujausi straipsniai apie operacines sistemas. Daug įdomių vadovų ir naudingų patarimų. Šiuolaikinių technologijų pasaulyje pasijuskite savais