Jak używać funkcji memcpy C ++

Jak używać funkcji memcpy C ++
W językach programowania, tworząc niektóre moduły logiczne dla naszych programów, musimy skopiować naszą treść z jednej tablicy dowolnego typu danych do innej tablicy. To duplikacja może być z całej tablicy lub może być dostosowana, zapewniając określony rozmiar, do którego musimy skopiować treść tablicy. Zjawisko to można wykonać poprzez różne podejścia. Wśród nich jest funkcja w języku programowania C ++ „Memcpy”. Służy to do kopiowania pamięci w postaci bloków.

Działanie Memcpy

MemCPy kopiuje bajty danych BYTE z tablicy źródłowej do tablicy docelowej. To kopiowanie danych jest ThreadSafe. Proces kopiowania danych może się nie powieść, jeśli dany rozmiar nie jest dokładny dla tablicy docelowej. W pewnym momencie zachowania funkcji memcpy () stają się niezdefiniowane w zależności od stanu. Czasami obiekty nakładają się na siebie, a w dowolnej z dwóch lokalizacji jest wskaźnik zerowy, albo źródło lub docelowe.

Składnia memcpy

# memcpy (nieważne miejsce docelowe, const void Źródło, liczba rozmiarów);

Tutaj miejsce docelowe i źródło są lokalizacjami, z których kopiuje się zawartość i do którego miejsca są kopiowane. Trzeci parametr pokazuje liczbę bajtów, które mają zostać skopiowane. Wartość zwrócona z tej funkcji Build_in to lokalizacja tablicy docelowej.

Wdrożenie funkcji memcpy ()

Przykład 1

Ten przykład zawiera kopię danych ze źródła do części docelowej. Najpierw musimy użyć dwóch bibliotek i pliku nagłówka w naszym kodzie źródłowym. Jednym z nich jest biblioteka iostream, która umożliwia CIN i Cout w programach C ++ i skutecznie wykorzystuje zaangażowanie użytkowników. Ale w tym programie musimy tylko wyświetlić wynikające z tego wartości; Dlatego musimy o tym wspomnieć. Druga używana biblioteka to biblioteka, która umożliwia kopiowanie danych ze źródła do miejsca docelowego. To kopiowanie i alokacja pamięci odbywa się za pośrednictwem biblioteki o nazwie CSTRING. Aby uczynić program w stanie roboczym, najpierw dołączymy te dwie biblioteki w pliku nagłówka.

#włączać
#włączać

Wszystkie funkcje sznurka lub tablicy znaków są wykonywane za pomocą biblioteki CSTRING. W programie głównym inicjowane są dwie tablice znaków. Jedna to tablica źródłowa, a druga jest tablicą docelową. Obie te tablice są wypełnione danymi, które musimy skopiować. W tym kodzie skopiujemy wszystkie dane jednej tablicy do drugiej. Wszystkie bajty zostaną zduplikowane w tablicy docelowej, ponieważ dane są kopiowane bajtem przez bajt. Tutaj obie tablice mają dane.

Może istnieć możliwość, gdy kopiujemy bajty z jednej tablicy do drugiej i gdy tablica docelowa jest pusta. Tego rodzaju przykłady zostaną omówione w dalszej części artykułu.

Na razie użyjemy funkcji MEMCPY do przyjmowania tablic źródłowych i docelowych jako parametru i źródła rozmiaru do łatwego kopiowania.

Memcpy (miejsce docelowe, źródło, sizeof (źródło));

Trzeci parametr określi rozmiar tablicy znaków źródłowych. Następnie użyj instrukcji Cout, aby wyświetlić zawartość w tablicy docelowej.

Zawsze używamy kompilatora do kompilacji. Następnie wykonaj kod, więc używamy g++. „-O” zapisuje dane wyjściowe kodu obecnego w pliku wejściowym.

$ g ++ -o mem mem.C
$ ./MEM

Tablica źródłowa zawiera „wskazówkę Linux” z wynikającej z tego wartości, a miejsce docelowe ma „artykuł”. Teraz tablica docelowa zawiera dane z tablicy źródłowej.

Przykład 2

Ten przykład będzie działał na tym samym zjawisku, ale skopiujemy dane ze źródła do miejsca docelowego do określonego limitu. Na przykład tablica znaków źródłowych zawiera te same dane co „wskazówka Linux”, a tablica docelowa ma „Memcpy”. Musimy więc skopiować dane z miejsca docelowego do źródła 4 bajtów. W tym celu wymienimy liczbę bajtów jako parametru. Kopiując określoną liczbę bajtów, dane w tablicy docelowej zostaną zastąpione danymi pliku źródłowego.

Memcpy (miejsce docelowe, źródło, 4);

Tutaj nie musimy obliczać rozmiaru tablicy źródłowej. Należy wymienić tylko liczbę, gdzie chcemy skopiować dane.

Zobaczysz, że 4 bajty ze źródła są kopiowane do miejsca docelowego. Na przykład „Linux” z „Linux wskazówka” jest wyodrębnione i kopiowane do tablicy docelowej. Podczas gdy w tablicy docelowej pierwsze 4 bajty są usuwane i zastępowane przez bajty tablicy źródłowej. Reszta bajtów w tablicy docelowej pozostanie taka sama.

Przykład 3

W tym przykładzie będziemy mieć wartości całkowitymi w tablicy źródłowej. Tym razem w pewnym stopniu w pewnym stopniu definiuje się tablicę źródła określonego rozmiaru. Jak wspomnialiśmy wcześniej, dane ze źródła zostaną skopiowane teraz do pustej tablicy. Następnie zadeklarujemy tablicę docelową określonego rozmiaru. W poniższym przykładzie wspomnieliśmy o rozmiarze tablicy jako 7, co oznacza, że ​​skopiujemy 7 liczb całkowitych w tablicy docelowej:

Int Destination [7];

Teraz użyjemy funkcji MEMCPY do skopiowania wartości liczb całkowitych 7 liczb, aby uniknąć powielania całych danych z pliku źródłowego. Tutaj użyjemy miejsca docelowego, tablicy źródłowej i całkowitego rozmiaru tablicy całkowitej pomnożonej przez 7, aby obliczyć rzeczywisty rozmiar:

# Memcpy (miejsce docelowe, źródło, sizeof (int) * 7);

Następnie wyświetlimy dane za pomocą pętli „for”, inaczej w poprzednich przykładach. Ponieważ każda liczba jest oddzielona przez wskaźnik tablicy, więc każdy indeks zawiera osobną wartość. A for Loop będzie nadal iterować do 7. pozycji. Teraz zapisz kod dla kompilacji.

W rezultacie kopiuje się 7 liczb całkowitych. Zawiera w sumie 10 bajtów:

Przykład 5

W ostatnim przykładzie skopiowaliśmy wartości liczby całkowitej do pustej tablicy. Tutaj skopiujemy znaki z tablicy źródła postaci do pustej tablicy znaków docelowych.

Najpierw zainicjuj tablicę źródłową za pomocą łańcucha. Wprowadzając tablicę znaków docelowych, zadeklaruj tylko rozmiar tablicy i utrzymuj ją. Zastosuj tę samą funkcję MEMCPY, aby skopiować zawartość tablicy źródłowej do pliku docelowego. Zastosowaliśmy limit do kopiowania danych, tak jak wcześniej. Chcemy więc przesyłać dane 9 bajtów, ponieważ wzięliśmy rozmiar tablicy docelowej jako 10.

Memcpy (miejsce docelowe, źródło, sizeof (char)*9);

W miarę zastosowania rozmiaru do tablicy użyjemy pętli do wyświetlania zawartości tablicy docelowej znaków. To wyświetli wartości obecne w każdym indeksie tablicy docelowej. Dane źródła do 9. bajtu, w tym przestrzeni, pokazano poniżej:

Wniosek

Artykuł „C ++ Memcpy” jest źródłem wiedzy na temat wbudowanej funkcji w języku programowania C ++, która zajmuje się kopiowaniem danych z jednej tablicy do innej tablicy. Istnieje wiele możliwości kopiowania danych z jednej tablicy drugiej. Są one wyjaśnione za pomocą przykładów usuwania wszelkich niejednoznaczności w zakresie użycia funkcji memcpy (). Mamy nadzieję, że ten artykuł jest pomocny. Sprawdź inne artykuły z Linux, aby uzyskać więcej wskazówek i samouczków.