Jak używać funkcji memcpy w języku c?

Jak używać funkcji memcpy w języku c?
W funkcji języka C memcpy () służy do kopiowania bloku pamięci z jednego miejsca do drugiego. W tym artykule szczegółowo omówimy, w jaki sposób używana jest funkcja memcpy (). Więc zacznijmy.

Plik nagłówka:

strunowy.H

Składnia:

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

Argumenty:

Funkcja przyjmuje 3 argumenty:

  1. Dest:
  2. Jest to początkowe wskaźnik bloku pamięci, w którym wskazał blok pamięci src (Drugi argument) zostanie skopiowany. Wskaźnik jest zadeklarowany jako pustka, więc każdy rodzaj bloku pamięci można skopiować.

  3. SRC:
  4. Jest to początkowa wskaźnik bloku pamięci źródłowej, z którego zostanie skopiowany blok pamięci. Wskaźnik jest zadeklarowany jako pustka, więc każdy rodzaj bloku pamięci można skopiować.

  5. Rozmiar:
  6. Jest to rozmiar bloku pamięci w bajtach.

Wartość dwóch wskaźników Dest I src powinno być w taki sposób, że dwa bloki pamięci nie nakładały się. Rozmiar bloków pamięci źródła i miejsca docelowego musi być przynajmniej od rozmiar (3. argument) bajty, aby uniknąć nakładających się sytuacji. Jeśli dwa bloki pamięci są nakładane, wówczas zachowanie memcpy () Funkcja jest niezdefiniowana. Gdy istnieje możliwość nakładania się, możesz użyć memmove () Funkcja biblioteki, w której nakładanie się jest dobrze zdefiniowane. memmove () funkcja jest wolniejsza w porównaniu do memcpy () funkcjonować.

Ze względu na wartość rozmiar, Jeśli źródło lub miejsce docelowe są dostępne poza długością bufora, to zachowanie memcpy () Funkcja jest niezdefiniowana.

memcpy () Funkcja nie sprawdza, aby zakończyć znak „\ 0”.

Zwracaj wartości:

Ta funkcja zwraca wartość adresu docelowego Dest. Jako wartość Dest jest już dostępny, więc nie musi przechowywać w żadnej zmiennej.

Przykłady:

//Przykład 1.C
#włączać
#włączać
int main ()

char src [] = "hello";
Char Dest [13];
Memcpy (Dest, Src, 6);
printf („dest po first memcpy () => %s \ n”, dest);
memcpy (dest+sizeof (src) -1, „świat!", 8);
printf („dest po drugim memcpy () => %s \ n”, dest);
powrót 0;

W przykładzie1.c Deklarowaliśmy tablicę dwóch znaków src I Dest. Wielkość src jest 6 i Dest jest 13. Najpierw skopiowaliśmy 6 znaków „h”, „e”, „l”, „l”, „o”, „\ 0” z src Do Dest (Wiersz 11). W drugiej funkcji memcpy () skopiował 8 znaków „,„ w ”,„ o ”,„ r ”,„ l ”,„ d ”, ','!', „\ 0' do Dest po 5 znakach (wiersz 15). Pictoralnie możemy to reprezentować w następujący sposób:

// Przykład2.C
#włączać
#włączać
int main ()

Student typuDef struct

nazwa char *;
int id;
int wiek;
std;
STD Student1; // deklaruj student1 typu std
STD Student2; // deklaruj student2 typu std
// przypisanie wartości sudent1
Student1.name = "Bamdev Ghosh";
Student1.id = 1105;
Student1.Wiek = 30;
printf ("Student1: \ n \ tname: %s \ n \ tid: %d \ n \ tage: %d \ n", student1.nazwa,
Student1.Id, Student1.wiek);
// skopiuj studenta 1 do studenta2
memcpy (i student2 i student1, sizeof (student1));
printf ("\ n \ nafter memcpy:");
printf ("\ n \ nstudent2: \ n \ tname: %s \ n \ tid: %d \ n \ tage: %d \ n",
Student2.Imię, student2.Id, Student2.wiek);
powrót 0;

W przykładzie2.c Deklarowaliśmy dwie struktury Student1 I Student2 (Linia 15 i 16). Po pierwsze, inicjujemy studenta 1 (linia 19, 20, 21). Następnie używamy memcpy Aby skopiować dane z Student1 Do Student2.

Wniosek:

W tym artykule nauczyliśmy się korzystać z memcpy funkcjonować. Widzieliśmy, że tę funkcję może być używana dla każdego rodzaju bloku pamięci, ale ta funkcja ma pewne ograniczenia. Musisz więc uważnie użyć tej funkcji.