Funkcje strdup() i strndup() w C/C++

The strdup() I strndup() funkcje służą do powielania ciągu.
strdup():
Składnia: char *strdup(const char *s);
Ta funkcja zwraca wskaźnik do zakończonego znakiem null ciągu bajtów, który jest duplikatem ciągu wskazywanego przez S . Uzyskana pamięć jest wykonywana dynamicznie przy użyciu malloc i dlatego można ją zwolnić za pomocą funkcji free() .
Zwraca wskaźnik do zduplikowanego ciągu S .
Poniżej znajduje się implementacja C pokazująca użycie funkcji strdup() w 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;> }>

Wyjście:

GeeksForGeeks 

strndup():
składnia: char *strndup(const char *s, size_t n);
Ta funkcja jest podobna do strdup(), ale co najwyżej kopiuje N bajty.
Notatka : Jeśli s jest dłuższe niż n, kopiowanych jest tylko n bajtów, a na końcu dodawana jest wartość NULL („ ”).
Poniżej znajduje się implementacja C pokazująca użycie funkcji strndup() w 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;> }>

Wyjście:

Geeks 

Zobaczmy różnice w formie tabelarycznej -:

strdup() strndup()
1. Służy do zwracania wskaźnika do łańcucha bajtów zakończonego znakiem null, Służy do zwracania wskaźnika do łańcucha bajtów zakończonego znakiem null
2. Jego składnia to -:
char * strdup( const char *str1 );

Jego składnia to -:

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

3. Jest zdefiniowany w plik nagłówkowy Jest zdefiniowany w plik nagłówkowy
4. Do duplikowania wystarczy jeden parametr będący wskaźnikiem do łańcucha bajtów zakończonego znakiem null

Przyjmuje dwa parametry, którymi są -:
1.wskaźnik na ciąg bajtów zakończony znakiem null, który ma zostać zduplikowany

2. maksymalna liczba bajtów do skopiowania z str

5. Zwracaną wartością jest wskaźnik do nowo przydzielonego ciągu. Zwraca wskaźnik zerowy, jeśli wystąpił błąd.

Odniesienie: Człowiek z Linuksem(7)