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 -:
1.punter a la cadena de bytes amb terminació nul·la per duplicar

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)