logo

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



wat is het internet






// 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;> }>



faculteit in Java
>

>

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


vijandige zoektocht



// 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:

polymorfisme in Java
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 );

software testen en typen
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)