Strdup -funksjon på C -språket

Strdup -funksjon på C -språket
Å huske og mestre funksjonene som omhandler strenger er veldig viktig fordi vi alltid bruker dem i en del av programmet som vi utvikler.

Strenger er en viktig del av programmeringen fordi de brukes til å sende meldinger til brukeren, vise resultatene, lese filene eller spesifisere veien, blant annet. De er også inngangs- og utgangsmetoden som letter samspillet mellom brukeren og programmet.

I denne Linux -hint -artikkelen vil du lære hvordan du bruker StrDup () -funksjonen for å duplisere strengene. Vi vil se syntaksen og den teoretiske beskrivelsen av å kalle metoden, dens inngangs- og utgangsargumenter og den aksepterte datatypen i hvert tilfelle.

Deretter bruker vi det vi lærte i de praktiske eksemplene ved å bruke kodebiter og bilder for å vise deg hvordan du bruker StrDup () -funksjonen til å duplisere strengene.

Syntaks av strdup () -funksjonen på C -språk

char *strdup (const char *str);

Beskrivelse av strdup () -funksjonen på C -språk

Strdup () -funksjonen dupliserer en streng. Denne funksjonen dupliserer strengen som er pekt på av STR -pekeren som er ført i inngangsargumentet, og returnerer en peker til den nye strengen som resultat.

StrDup () tilhører STRXXDUP () funksjonen av funksjoner, som alle er ment å duplisere strengene, men hver har en annen anropsmodus og funksjonalitet for å imøtekomme de spesielle behovene til programmereren.

Som alle strengbehandlingsfunksjoner, er strdup () definert i “Strengen.h ”header. For å bruke den, må du inkludere den i koden din som følger:

#inkludere

Hvordan dupliserer du en streng ved hjelp av strdup () -funksjonen på C -språket

I dette eksemplet bruker vi strdup () -funksjonen for å duplisere en streng. Deretter bruker vi printf () -funksjonen for å vise de "originale" og "dupliserte" strengpekerne i kommandokonsollen.

For å gjøre dette inkluderer vi “stdio.H ”og“ String.H ”overskrifter i koden vår og definerer de to strengpekerne inne i hoved- () -funksjonen. Den første kalles "original" som inneholder "Eksempel for strdup () -funksjonen”Uttrykk. Den andre pekeren kalles "Duplicate" som inneholder stedet der Strdup () -funksjonen lagrer kopien av den originale strengen.

Når strengene som programmet bruker er definert, kaller vi strdup () -funksjonen og gir pekeren til den opprinnelige strengen som inngangsargumentet og pekeren til den dupliserte strengen som utgangsargument. Deretter bruker vi print () -funksjonen for å vise “original” og “duplikat” strengpekere på kommandokonsollen. Her er koden for dette eksemplet:

#inkludere
#inkludere
tomrom ()

char* original = "Eksempel på strdup () funksjon";
char* duplikat;
duplikat = strdup (original);
printf ("original:%s \ n", original);
printf ("Duplicate:%s \ n", duplikat);

Som vi ser i den følgende figuren, dupliserer Strdup () den opprinnelige strengen ved bokstavelig talt duplisering av innholdet.

Forskjeller mellom strdup () og strndup () -funksjonene

Familien StrxxDupx () består av følgende funksjoner:

char *strdup (const char *s);
char *strndup (const char *s, size_t n);
char *strdupa (const char *s);
char *strndupa (const char *s, size_t n);

Funksjonene i denne familien er alle designet for å duplisere strengene, men hver av dem fungerer på en annen måte.

Som vi har sett, dupliserer StrDup () -funksjonen strengen som sendes i inngangsargumentet og returnerer en eksakt kopi i utgangsargumentet.

Strndup () -funksjonen dupliserer strengen til inngangsargumentet. Det kan gjøre det helt eller delvis.

I motsetning til strdup (), tar Strndup () -funksjonen to inngangsargumenter. Det første argumentet er "Str" som er pekeren til strengen som skal dupliseres. Det andre argumentet er "N" som er en variabel av type størrelse_t som spesifiserer antall tegn som den kopierer.

I det følgende eksemplet ser vi bruken av strndup () -funksjonen der bare 8 av tegnene til den originale strengen er duplisert.

#inkludere
#inkludere
tomrom ()

char* original = "Eksempel på strdup () funksjon";
char* duplikat;
størrelse_t n = 8;
duplikat = strndup (original, n);
printf ("original:%s \ n", original);
printf ("Duplicate:%s \ n", duplikat);

Som sett i følgende figur, dupliserer Strndup () -funksjonen et tall "N" -tegn fra den originale strengen.

Feil som kan genereres av strdup () -funksjonen

Feilen som denne funksjonen kan generere er at "systemet ikke har nok minne til å kjøre prosessen" som er usannsynlig på nåværende systemer.

Denne feilen er definert i “Errno.H ”header og koden kan spørres via Errno Global Variable. Definisjonen er enomem.

Konklusjon

I denne Linux -hint -artikkelen forklarte vi hvordan du bruker StrDup () -funksjonen som tilhører familien med strengbehandlingsfunksjoner som er definert i strengen.H header.

Vi så på syntaks for denne funksjonen og ga en teoretisk forklaring om bruken, dens innspill og utgangsargumenter.

For å hjelpe deg med å forstå hvordan det fungerer, opprettet vi et praktisk eksempel med kode og bilder der du kan se hvordan pekerne og strengene som brukes av denne funksjonen opprettes og hvordan funksjonen kalles.

Vi viste deg også hvordan du bruker Strndup () -funksjonen, en annen funksjon fra STRXXDUPX () -familien, slik at du kjenner de forskjellige mulighetene som C -språket tilbyr for å duplisere strengene.