Pengaturcaraan C

Cara menggunakan fungsi memcpy dalam bahasa C?

Cara menggunakan fungsi memcpy dalam bahasa C?
Dalam bahasa C memcpy fungsi () digunakan untuk menyalin blok memori dari satu lokasi ke lokasi lain. Dalam artikel ini, kita akan membincangkan secara terperinci bagaimana fungsi memcpy () digunakan. Oleh itu, mari kita mulakan.

Fail Tajuk:

tali.h

Sintaks:

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

Hujah:

Fungsi ini mengambil 3 argumen:

  1. destinasi:
  2. Ini adalah penunjuk permulaan blok memori di mana blok memori ditunjukkan src (Hujah ke-2) akan disalin. Penunjuk dinyatakan sebagai batal, jadi semua jenis blok memori dapat disalin.

  3. src:
  4. Ini adalah penunjuk permulaan blok memori sumber dari mana blok memori akan disalin. Penunjuk dinyatakan sebagai batal, jadi semua jenis blok memori dapat disalin.

  5. saiz:
  6. Ini adalah ukuran blok memori dalam bait.

Nilai dua penunjuk dest dan src harus sedemikian rupa sehingga dua blok memori tidak bertindih. Ukuran blok memori sumber dan destinasi mestilah sekurang-kurangnya ukuran (Argumen ke-3) bait untuk mengelakkan situasi bertindih. Sekiranya dua blok memori bertindih maka tingkah laku memcpy () fungsi tidak ditentukan. Apabila ada kemungkinan tumpang tindih, anda dapat menggunakan memindahkan () fungsi perpustakaan di mana pertindihan ditentukan dengan baik. memindahkan () fungsi lebih perlahan berbanding memcpy () fungsi.

Oleh kerana nilai ukuran, jika sumber atau tujuan diakses melebihi panjang penyangga mereka maka tingkah laku memcpy () fungsi tidak ditentukan.

The memcpy () fungsi tidak memeriksa untuk menamatkan watak '\ 0'.

Nilai pulangan:

Fungsi ini mengembalikan nilai alamat tujuan dest. Sebagai nilai dest sudah tersedia jadi, tidak perlu menyimpan dalam pemboleh ubah apa pun.

Contoh:

// Contoh1.c
#sertakan
#sertakan
int utama ()

char src [] = "Helo";
char dest [13];
memcpy (dest, src, 6);
printf ("dest selepas memcpy pertama () =>% s \ n", dest);
memcpy (dest + sizeof (src) -1, "dunia!", 8);
printf ("dest after second memcpy () =>% s \ n", dest);
pulangan 0;

Dalam Contoh1.c kita telah menyatakan susunan dua watak src dan dest. Saiznya src ialah 6 dan dest adalah 13. Pertama, kami menyalin 6 aksara 'H', 'e', ​​'l', 'l', 'o', '\ 0' dari src ke dest (Baris 11). Pada fungsi memcpy () kedua disalin 8 aksara ", 'w', 'o', 'r', 'l', 'd', '!',' \ 0 'ke destinasi selepas 5 aksara (Baris 15). Secara bergambar kita dapat menggambarkannya seperti berikut:

// Contoh2.c
#sertakan
#sertakan
int utama ()

pelajar typedef struct

nama char *;
int id;
umur int;
std;
pelajar std1; // Menyatakan pelajar1 jenis std
pelajar std2; // Menyatakan pelajar2 jenis std
// Menetapkan nilai sudent1
pelajar1.nama = "Bamdev Ghosh";
pelajar1.id = 1105;
pelajar1.umur = 30;
printf ("Pelajar1: \ n \ tNama:% s \ n \ tid:% d \ n \ tage:% d \ n", pelajar1.nama,
pelajar1.id, pelajar1.umur);
// Salin pelajar1 kepada pelajar2
memcpy (& student2, & student1, sizeof (student1));
printf ("\ n \ nSelepas memcpy:");
printf ("\ n \ nPelajar2: \ n \ tNama:% s \ n \ tid:% d \ n \ tage:% d \ n",
pelajar2.nama, pelajar2.id, pelajar2.umur);
pulangan 0;

Dalam Contoh2.c kita telah menyatakan dua struktur pelajar1 dan pelajar2 (Baris 15 dan 16). Pertama, kita memulakan pelajar1 (Baris 19, 20, 21). Selepas itu, kami menggunakan memcpy untuk menyalin data dari pelajar1 ke pelajar2.

Kesimpulan:

Dalam artikel ini, kami telah mempelajari cara menggunakan memcpy fungsi. Kami telah melihat bahawa fungsi ini dapat digunakan untuk semua jenis blok memori tetapi fungsi ini mempunyai beberapa batasan. Jadi, anda mesti menggunakan fungsi ini dengan berhati-hati.

Port Sumber Terbuka Mesin Permainan Komersial
Rekreasi enjin permainan sumber terbuka dan bebas platform boleh digunakan untuk bermain lama dan juga beberapa tajuk permainan yang baru-baru ini. Ar...
Permainan Perintah Terbaik untuk Linux
Baris perintah bukan hanya sekutu terbesar anda ketika menggunakan Linux-ia juga dapat menjadi sumber hiburan kerana anda dapat menggunakannya untuk m...
Aplikasi Pemetaan Gamepad Terbaik untuk Linux
Sekiranya anda suka bermain permainan di Linux dengan gamepad dan bukannya sistem input papan kekunci dan tetikus biasa, ada beberapa aplikasi berguna...

Artikel terkini mengenai sistem operasi. Banyak panduan menarik dan petua berguna. Rasa seperti anda sendiri dalam dunia teknologi moden