Arbeid av memcpy
MEMCPY kopierer data byte av byte fra kildeoppstillingen til destinasjonsarrayen. Denne kopieringen av data er trådsafe. Prosessen med å kopiere data kan mislykkes hvis den gitte størrelsen ikke er nøyaktig for destinasjonsarrayen. På et tidspunkt blir oppførselen til memcpy () -funksjonen udefinert avhengig av tilstanden. Noen ganger overlapper gjenstandene, og det er en nullpeker på noen av de to stedene, enten kilde eller destinasjon.
Syntaks av memcpy
# MEMCPY (Void Destination, Const Void Source, Size Count);Her er destinasjon og kilde stedene der innholdet er kopiert og til hvilket sted de kopieres. Den tredje parameteren viser antall byte som skal kopieres. Returverdien fra denne Built_in -funksjonen er plasseringen av destinasjonsarrayen.
Implementering av memcpy () -funksjonen
Eksempel 1
Dette eksemplet inneholder kopien av data fra kilden til destinasjonsdelen. Først må vi bruke to biblioteker og en overskriftsfil i kildekoden vår. Den ene er iostream -biblioteket som muliggjør CIN og COUT i C ++ -programmer og effektivt bruker brukerinvolvering. Men i dette programmet trenger vi bare å vise de resulterende verdiene; Derfor må vi nevne det. Det andre biblioteket som brukes er biblioteket som tillater kopiering av data fra kilden til destinasjonen. Denne kopieringen og tildelingen av minne gjøres gjennom et bibliotek som heter CString. Så for å lage programmet i en fungerende tilstand, vil vi først inkludere disse to bibliotekene i overskriftsfilen.
#inkludereAlle streng- eller karakterarray -funksjonaliteter gjøres ved hjelp av et bibliotek cstring. I hovedprogrammet initialiseres to karaktermatriser. Den ene er en kilde -matrise, og den andre er destinasjonsarrayen. Begge disse matrisene er fylt med data som vi trenger å kopiere. I denne koden vil vi kopiere alle dataene til en matrise til en annen. Alle byte vil bli duplisert i destinasjonsarrayen, da dataene kopieres byte av byte. Her har begge matriser data.
Det kan være en mulighet når vi kopierer byte fra en rekke til en annen, og når destinasjonsarrayen er tom. Disse typer eksempler vil bli diskutert senere i artikkelen.
Foreløpig vil vi bruke MEMCPY -funksjonen for å ta kilde- og destinasjonsarrayer som en parameter og størrelsen på kilden for å kopiere enkelt.
Memcpy (destinasjon, kilde, størrelse av (kilde));Den tredje parameteren vil bestemme størrelsen på kildekarakteren. Deretter bruker du cout -setningen til å vise innholdet i destinasjonsarrayen.
Vi bruker alltid en kompilator for å kompilere. Utfør deretter koden, så vi bruker G++. "-O" vil lagre utdataene fra koden som er til stede i inndatafilen.
$ g ++ -o mem mem.cKildeoppstillingen inneholder "Linux hint" fra den resulterende verdien, og destinasjonen har "artikkel". Nå inneholder destinasjonsarrayen dataene fra kildeoppstillingen.
Eksempel 2
Dette eksemplet vil fungere på det samme fenomenet, men vi vil kopiere dataene fra kilden til destinasjonen opp til en spesifikk grense. For eksempel inneholder kildekarakter -arrayen de samme dataene som "Linux Hint", og destinasjonsarrayen har "MEMCPY". Så vi må kopiere dataene fra destinasjonen til kilden til 4 byte. For dette formålet vil vi nevne antall byte som parameter. Mens du kopierer det spesifikke antallet byte, blir dataene i destinasjonsarrayen erstattet av kildefilen.
MEMCPY (destinasjon, kilde, 4);Her trenger vi ikke å beregne størrelsen på kildekruppen. Bare et tall skal nevnes der vi vil kopiere data.
Du vil se at de 4 byte fra kilden er kopiert til destinasjonen. For eksempel blir "Linux" fra "Linux Hint" trukket ut og kopiert til destinasjonsarrayen. Mens de første 4 byteene i destinasjonsarray. Resten av byte i destinasjonsarrayen vil forbli den samme.
Eksempel 3
I dette eksemplet vil vi ha heltallverdier i kildeoppstillingen. Denne gangen defineres en kilde utvalg av spesifikk størrelse for å lagre data opp til en viss grad. Som vi har nevnt tidligere, vil dataene fra kilden bli kopiert nå til den tomme matrisen. Deretter vil vi erklære en destinasjonsutvalg av en bestemt størrelse. I det følgende eksempel har vi nevnt størrelsen på matrisen som 7, noe som betyr at vi vil kopiere 7 heltall i destinasjonsarrayen:
Int destinasjon [7];Nå vil vi bruke MEMCPY -funksjonen til å kopiere heltallverdiene på 7 tall for å unngå å duplisere hele data fra kildefilen. Her vil vi bruke destinasjon, kildesett og den totale størrelsen på heltallsarrayen multiplisert med 7 for å beregne den faktiske størrelsen:
# Memcpy (destinasjon, kilde, størrelse av (int) * 7);Deretter vil vi vise data ved hjelp av en "for" -sløyfe, i motsetning til i de forrige eksemplene. Når hvert tall skilles gjennom indeksen for en matrise, så inneholder hver indeks en egen verdi. A for loop vil fortsette å iterere opp til 7. plassering. Lagre koden for samlingen.
Som et resultat kopieres 7 heltall. Dette inneholder totalt 10 byte:
Eksempel 5
I det siste eksemplet har vi kopiert heltallverdiene til den tomme matrisen. Her vil vi kopiere karakterene fra karakterkilde -arrayen til den tomme destinasjonskarakteren.
Først, initialiser kildeoppstillingen med strengen. Mens du introduserer destinasjonskarakteren, erklærer du bare størrelsen på matrisen og holder den tom. Bruk den samme memcpy -funksjonen for å kopiere innholdet i kildeoppstillingen til destinasjonsfilen. Vi har brukt en grense for å kopiere dataene, som vi gjorde før. Så vi ønsker å overføre data fra 9 byte, da vi har tatt størrelsen på destinasjonsarrayen som 10.
MEMCPY (destinasjon, kilde, størrelse av (røye)*9);Når størrelsen brukes på matrisen, vil vi bruke en løkke for å vise innholdet i karakterdestinasjonsarrayen. Dette vil vise verdiene som er til stede i hver indeks for destinasjonsarrayen. Dataene fra kilden opp til den 9. byte, inkludert plass, vises nedenfor:
Konklusjon
Artikkelen “C ++ MEMCPY” er en kilde til kunnskap om den innebygde funksjonen i C ++ programmeringsspråket som omhandler kopiering av data fra en matrise til en annen matrise. Det er mange muligheter for å kopiere data fra en rekke to andre. Disse blir forklart ved hjelp av eksempler for å fjerne eventuell tvetydighet angående bruken av memcpy () -funksjonen. Vi håper du fant denne artikkelen nyttig. Sjekk de andre Linux -hint -artiklene for flere tips og opplæringsprogrammer.