C Програмиране

Как да използвам функцията memcpy на C език?

Как да използвам функцията memcpy на C език?
На езика C функцията memcpy () се използва за копиране на блок памет от едно място на друго. В тази статия ще обсъдим подробно как се използва функцията memcpy (). И така, нека започнем.

Заглавен файл:

низ.з

Синтаксис:

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

Аргументи:

Функцията отнема 3 аргумента:

  1. дестинация:
  2. Това е начален указател на блок памет, където блокът памет, посочен от src (2-ри аргумент) ще бъде копиран. Показалецът е деклариран като void, така че всеки тип блок памет може да бъде копиран.

  3. src:
  4. Това е начален указател на блока памет източник, откъдето блокът памет ще бъде копиран. Показалецът е деклариран като void, така че всеки тип блок памет може да бъде копиран.

  5. размер:
  6. Това е размерът на блока памет в байтове.

Стойността на двата указателя дест и src трябва да бъде по такъв начин, че два блока памет да не се припокриват. Размерът на блоковете памет на източника и местоназначението трябва да бъде поне размер (3-ти аргумент) байта, за да се избегнат припокриващи се ситуации. Ако двата блока памет се припокриват, тогава поведението на memcpy () функция е недефинирана. Когато има възможност за припокриване, можете да използвате memmove () библиотечна функция, където припокриването е добре дефинирано. memmove () функцията е по-бавна в сравнение с memcpy () функция.

Поради стойността на размер, ако източникът или местоназначението са достъпни извън тяхната дължина на буфера, тогава поведението на memcpy () функция е недефинирана.

The memcpy () функцията не проверява за прекратяване на символ \ \ 0.

Върнати стойности:

Тази функция връща стойността на адреса на местоназначението дест. Като стойността на дест вече е наличен, така че не е необходимо да се съхранява в която и да е променлива.

Примери:

// Пример1.° С
#include
#include
int main ()

char src [] = "Здравейте";
char dest [13];
memcpy (dest, src, 6);
printf ("dest след първата memcpy () =>% s \ n", dest);
memcpy (dest + sizeof (src) -1, "свят!", 8);
printf ("dest след втори memcpy () =>% s \ n", dest);
връщане 0;

В Пример1.c декларирахме двусимволен масив src и дест. Размерът на src е 6 и дест е 13. Първо копирахме 6 знака „H“, „e“, „l“, „l“, „o“, „\ 0“ от src да се дест (Ред 11). Във втората функция memcpy () са копирани 8 знака ", 'w', 'o', 'r', 'l', 'd', '!',' \ 0 'до дестинацията след 5 знака (ред 15). Нагледно можем да представим това по следния начин:

// Пример2.° С
#include
#include
int main ()

typedef struct студент

char * име;
int id;
int възраст;
std;
std студент1; // Деклариране на student1 от тип std
std студент2; // Деклариране на студент2 от тип std
// Присвояване на стойността на sudent1
студент1.name = "Bamdev Ghosh";
студент1.id = 1105;
студент1.възраст = 30;
printf ("Student1: \ n \ tName:% s \ n \ tid:% d \ n \ tage:% d \ n", студент1.име,
студент1.id, студент1.възраст);
// Копиране на student1 в student2
memcpy (& student2, & student1, sizeof (student1));
printf ("\ n \ nСлед memcpy:");
printf ("\ n \ nУченик2: \ n \ tИме:% s \ n \ tid:% d \ n \ tage:% d \ n",
студент2.име, ученик2.id, студент2.възраст);
връщане 0;

В Пример2.c декларирахме две структури студент1 и студент2 (Ред 15 и 16). Първо инициализираме student1 (Редове 19, 20, 21). След това използваме memcpy за копиране на данни от студент1 да се студент2.

Заключение:

В тази статия научихме как да използваме memcpy функция. Видяхме, че тази функция може да се използва за всеки тип блок памет, но тази функция има някои ограничения. Така че, трябва внимателно да използвате тази функция.

HD Remastered Games за Linux, които никога преди не са имали издание на Linux
Много разработчици и издатели на игри излизат с HD ремастер на стари игри, за да удължат живота на франчайза, моля феновете, които искат съвместимост ...
Как да използвам AutoKey за автоматизиране на Linux игри
AutoKey е програма за автоматизация на настолни компютри за Linux и X11, програмирана в Python 3, GTK и Qt. Използвайки неговата функционалност за скр...
Как да покажа брояч на FPS в игрите на Linux
Linux игрите получиха голям тласък, когато Valve обяви поддръжка на Linux за Steam клиент и техните игри през 2012 г. Оттогава много AAA и независими ...

Последни статии за операционните системи. Много интересни ръководства и полезни съвети. Почувствайте се като своя в света на модерните технологии