Funcions strdup() i strndup() en C/C++
El strdup() i strndup() Les funcions s'utilitzen per duplicar una cadena.
strdup():
Sintaxi: char *strdup(const char *s);
Aquesta funció retorna un punter a una cadena de bytes terminada en nul·la, que és un duplicat de la cadena apuntada per s . La memòria obtinguda es fa de forma dinàmica mitjançant malloc i, per tant, es pot alliberar mitjançant free() .
Retorna un punter a la cadena duplicada s .
A continuació es mostra la implementació C per mostrar l'ús de la funció strdup() en 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;> }> |
Sortida:
GeeksForGeeks
strndup():
sintaxi: char *strndup(const char *s, size_t n);
Aquesta funció és similar a strdup(), però copia com a màxim n bytes.
Nota : Si s és més llarg que n, aleshores només es copien n bytes i s'afegeix un NULL (‘ ’) al final.
A continuació es mostra la implementació C per mostrar l'ús de la funció strndup() en 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;> }> |
Sortida:
Geeks
Vegem les diferències en forma tabular -:
| strdup() | strndup() | |
| 1. | S'utilitza per retornar un punter a una cadena de bytes terminada en nul·la, | S'utilitza per retornar un punter a una cadena de bytes terminada en null |
| 2. | La seva sintaxi és -: char * strdup( const char *str1 ); | La seva sintaxi és -: char *strndup(const char *str, size_t size); |
| 3. | Es defineix a fitxer de capçalera | Es defineix a fitxer de capçalera |
| 4. | Només es necessita un paràmetre que sigui el punter a la cadena de bytes acabada en nul per duplicar | Pren dos paràmetres que són -: 2. nombre màxim de bytes per copiar de str |
| 5. | El seu valor de retorn és el punter a la cadena acabada d'assignar. | Retorna un punter nul si s'ha produït un error. |
Referència: Home Linux (7)