C Programmēšana

Kā izmantot memcpy funkciju C valodā?

Kā izmantot memcpy funkciju C valodā?
C valodā memcpy () funkcija tiek izmantota atmiņas bloka kopēšanai no vienas vietas uz otru. Šajā rakstā mēs sīki apspriedīsim, kā tiek izmantota funkcija memcpy (). Tātad, sāksim darbu.

Galvenes fails:

virkne.h

Sintakse:

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

Argumenti:

Funkcijai nepieciešami 3 argumenti:

  1. mērķis:
  2. Šis ir atmiņas bloka sākuma rādītājs, uz kuru norāda atmiņas bloks src (2. arguments) tiks kopēts. Rādītājs tiek pasludināts par nederīgu, tāpēc var nokopēt jebkura veida atmiņas blokus.

  3. src:
  4. Šis ir avota atmiņas bloka sākuma rādītājs, no kura atmiņas bloks tiks kopēts. Rādītājs tiek pasludināts par nederīgu, tāpēc var nokopēt jebkura veida atmiņas blokus.

  5. Izmērs :
  6. Tas ir atmiņas bloka lielums baitos.

Divu rādītāju vērtība gal un src jābūt tādam, lai divi atmiņas bloki nepārklājas. Avota un mērķa atmiņas bloku lielumam jābūt vismaz Izmērs (3. arguments) baiti, lai izvairītos no situāciju pārklāšanās. Ja abi atmiņas bloki pārklājas, tad memcpy () funkcija nav definēta. Ja ir iespēja pārklāties, varat izmantot memmove () bibliotēkas funkcija, kur pārklāšanās ir labi definēta. memmove () funkcija ir lēnāka, salīdzinot ar memcpy () funkciju.

Vērtības dēļ Izmērs, ja avotam vai galamērķim piekļūst ārpus to bufera garuma, tad memcpy () funkcija nav definēta.

The memcpy () funkcija nepārbauda, ​​lai pārtrauktu rakstzīmi '\ 0'.

Atgriešanās vērtības:

Šī funkcija atgriež galamērķa adreses vērtību gal. Kā vērtība gal ir jau pieejams, tāpēc tas nav jāuzglabā nevienā mainīgajā.

Piemēri:

// Piemērs1.c
# iekļaut
# iekļaut
int main ()

char src [] = "Labdien";
char dest [13];
memcpy (dest, src, 6);
printf ("dest aiz pirmā memcpy () =>% s \ n", dest);
memcpy (dest + sizeof (src) -1, "pasaule!", 8);
printf ("dest aiz otrā memcpy () =>% s \ n", dest);
atgriešanās 0;

1. piemērā.c mēs esam deklarējuši divu rakstzīmju masīvu src un gal. Izmērs src ir 6 un gal ir 13. Pirmkārt, mēs nokopējām 6 rakstzīmes “H”, “e”, “l”, “l”, “o”, “\ 0” no src uz gal (11. rindiņa). Otrajā memcpy () funkcija nokopēja 8 rakstzīmes "," w "," o "," r "," l "," d ","!"," \ 0 "līdz galam pēc 5 rakstzīmēm (15. rindiņa). Attēlā mēs to varam attēlot šādi:

// Piemērs2.c
# iekļaut
# iekļaut
int main ()

typedef struct students

char * nosaukums;
int id;
int vecums;
std;
std students1; // Paziņot studentu1 par standarta tipu
std students2; // Pasludināt studentu2 par standarta tipu
// Sudent1 vērtības piešķiršana
students1.nosaukums = "Bamdev Ghosh";
students1.id = 1105;
students1.vecums = 30;
printf ("Students1: \ n \ tNosaukums:% s \ n \ tid:% d \ n \ tage:% d \ n", students1.nosaukums,
students1.id, students1.vecums);
// Kopēt studentu1 studentam2
memcpy (& students2, & students1, sizeof (students1));
printf ("\ n \ nPēc memcpy:");
printf ("\ n \ nStudents2: \ n \ tNosaukums:% s \ n \ tid:% d \ n \ tage:% d \ n",
students2.vārds, students2.id, students2.vecums);
atgriešanās 0;

2. piemērā.c mēs esam deklarējuši divas struktūras students1 un students2 (15. un 16. rinda). Pirmkārt, mēs inicializējam studentu1 (19., 20., 21. rinda). Pēc tam mēs izmantojam memcpy lai kopētu datus no students1 uz students2.

Secinājums:

Šajā rakstā mēs esam iemācījušies izmantot memcpy funkciju. Mēs esam redzējuši, ka šo funkciju var izmantot jebkura veida atmiņas blokiem, taču šai funkcijai ir daži ierobežojumi. Tātad, šī funkcija ir jāizmanto uzmanīgi.

Vidējā peles poga nedarbojas sistēmā Windows 10
The peles vidējā poga palīdz jums ritināt garas tīmekļa lapas un ekrānus ar lielu datu daudzumu. Ja tas apstājas, jūs galu galā izmantosiet tastatūru,...
Kā nomainīt peles kreiso un labo pogu operētājsistēmā Windows 10
Tas ir diezgan normāli, ka visas datora peles ierīces ir ergonomiski izstrādātas lietotājiem ar labo roku. Bet ir pieejamas peles ierīces, kas ir īpaš...
Atdariniet peles klikšķus, virzot kursoru, izmantojot operētājsistēmā Windows 10 bezklikšķu peli
Peles vai tastatūras lietošana nepareizā pozā, ja to lieto pārmērīgi daudz, var izraisīt daudz veselības problēmu, tostarp spriedzi, karpālā kanāla si...

Jaunākie raksti par operētājsistēmām. Daudz interesantu ceļvežu un noderīgu padomu. Mūsdienu tehnoloģiju pasaulē justies kā savējiem