strdup() och strndup() fungerar i C/C++
De strdup() och strndup() funktioner används för att duplicera en sträng.
strdup():
Syntax : char *strdup(konst char *s);
Denna funktion returnerar en pekare till en noll-terminerad bytesträng, som är en dubblett av strängen som pekas på av s . Det erhållna minnet görs dynamiskt med malloc och kan därför frigöras med free() .
Den returnerar en pekare till den duplicerade strängen s .
Nedan är C-implementationen för att visa användningen av strdup()-funktionen i C:
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;> }> |
Produktion:
GeeksForGeeks
strndup():
syntax: char *strndup(konst char *s, storlek_t n);
Denna funktion liknar strdup(), men kopierar som mest n bytes.
Notera : Om s är längre än n, kopieras endast n byte, och en NULL (' ') läggs till i slutet.
Nedan är C-implementeringen för att visa användningen av strndup()-funktionen i C:
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;> }> |
Produktion:
Geeks
Låt oss se skillnaderna i tabellform -:
| strdup() | strndup() | |
| 1. | Den används för att returnera en pekare till en noll-terminerad bytesträng, | Den används för att returnera en pekare till en noll-terminerad bytesträng |
| 2. | Dess syntax är -: char * strdup( const char *str1 ); | Dess syntax är -: char *strndup( const char *str, size_t size ); |
| 3. | Det definieras i header-fil | Det definieras i header-fil |
| 4. | Det krävs bara en parameter som är pekare till den nollterminerade bytesträngen för att duplicera | Det krävs två parametrar som är -: 2. max antal byte att kopiera från str |
| 5. | Dess returvärde är en pekare till den nyligen allokerade strängen. | Den returnerar en nollpekare om ett fel inträffade. |
Referens: Linux man(7)