logo

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:

sts pobierz
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 -:

skrót Excela z wielkimi literami

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)