Galvenes fails:
virkne.hSintakse:
void * mempcpy (void * dest, const void * src, size_t size)Argumenti:
Funkcijai nepieciešami 3 argumenti:
- mērķis:
- src:
- Izmērs :
Š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.
Š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.
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.