logo

Funcțiile strdup() și strndup() în C/C++

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 -:
1.pointer către șirul de octeți terminat în nul de duplicat

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)