The strdup() și strndup() funcțiile sunt folosite pentru a duplica un șir.
strdup():
Sintaxa: char *strdup(const char *s);
Această funcție returnează un pointer către un șir de octeți terminat în nul, care este o duplicare a șirului indicat de s . Memoria obținută se face dinamic folosind malloc și, prin urmare, poate fi eliberată folosind free() .
Returnează un pointer către șirul duplicat s .
Mai jos este implementarea C pentru a arăta utilizarea funcției strdup() în C:
C
redenumiți un director linux
// 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;> }> |
>
>
Ieșire:
GeeksForGeeks>
strndup():
sintaxă: char *strndup(const char *s, size_t n);
Această funcție este similară cu strdup(), dar se copiază cel mult n octeți.
Notă : Dacă s este mai lung decât n, atunci numai n octeți sunt copiați și un NULL (‘ ’) este adăugat la sfârșit.
Mai jos este implementarea C pentru a arăta utilizarea funcției strndup() în 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;> }> |
>
>
Ieșire:
Geeks>
Să vedem diferențele într-o formă tabelară -:
| strdup() | strndup() | |
| 1. | Este folosit pentru a returna un pointer la un șir de octeți terminat cu nul, | Este folosit pentru a returna un pointer la un șir de octeți terminat în nul |
| 2. | Sintaxa sa este -: char * strdup( const char *str1 ); | Sintaxa sa este -: sfârșitul java char *strndup( const char *str, size_t size ); |
| 3. | Este definit în fișier antet | Este definit în fișier antet |
| 4. | Este nevoie de un singur parametru care este un pointer către șirul de octeți terminat cu nul pentru a se duplica | Este nevoie de doi parametri care sunt -: 2. numărul maxim de octeți de copiat din str |
| 5. | Valoarea sa returnată este pointerul către șirul nou alocat. | Returnează un pointer nul dacă a apărut o eroare. |
Referinţă: om Linux(7)