strdup() en strndup() functies in C/C++

De strdup() En strndup() functies worden gebruikt om een ​​string te dupliceren.
strdup() :
Syntaxis: char *strdup(const char *s);
Deze functie retourneert een pointer naar een op nul eindigende bytetekenreeks, die een duplicaat is van de tekenreeks waarnaar wordt verwezen S . Het verkregen geheugen wordt dynamisch gedaan met malloc en kan daarom worden vrijgegeven met free() .
Het retourneert een verwijzing naar de gedupliceerde tekenreeks S .
Hieronder vindt u de C-implementatie om het gebruik van de strdup()-functie in C te tonen:

C




// C program to demonstrate strdup()> #include> #include> int> main()> {> > char> source[] => 'GeeksForGeeks'> ;> > // A copy of source is created dynamically> > // and pointer to copy is returned.> > char> * target = strdup(source);> > printf> (> '%s'> , target);> > return> 0;> }>

Uitgang:

GeeksForGeeks 

strndup() :
syntaxis: char *strndup(const char *s, size_t n);
Deze functie is vergelijkbaar met strdup(), maar kopieert maximaal N bytes.
Opmerking : Als s langer is dan n, worden er slechts n bytes gekopieerd en wordt aan het einde een NULL (‘ ’) toegevoegd.
Hieronder vindt u de C-implementatie om het gebruik van de strndup()-functie in C te tonen:

C




// C program to demonstrate strndup()> #include> #include> int> main()> {> > char> source[] => 'GeeksForGeeks'> ;> > // 5 bytes of source are copied to a new memory> > // allocated dynamically and pointer to copied> > // memory is returned.> > char> * target = strndup(source, 5);> > printf> (> '%s'> , target);> > return> 0;> }>

Uitgang:

Geeks 

Laten we de verschillen in tabelvorm bekijken -:

strdup() strndup()
1. Het wordt gebruikt om een ​​pointer terug te sturen naar een op nul eindigende bytestring, Het wordt gebruikt om een ​​pointer terug te sturen naar een op nul eindigende bytestring
2. De syntaxis ervan is -:
char * strdup( const char *str1 );

De syntaxis ervan is -:

char *strndup( const char *str, size_t size );

3. Het is gedefinieerd in header-bestand Het is gedefinieerd in header-bestand
4. Er is slechts één parameter nodig die verwijst naar de op null eindigende bytereeks om te dupliceren

Er zijn twee parameters nodig: -:
1. pointer naar de null-beëindigde bytereeks die moet worden gedupliceerd

2. maximaal aantal bytes om te kopiëren van str

5. De retourwaarde ervan is een verwijzing naar de nieuw toegewezen string. Het retourneert een nulaanwijzer als er een fout is opgetreden.

Referentie: Linux-man(7)



Dit Vind Je Misschien Leuk