logo

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


matemàtiques java pow



// 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)