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ą -: 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)