Funzioni strdup() e strndup() in C/C++

IL strdup() E strndup() le funzioni vengono utilizzate per duplicare una stringa.
strdup() :
Sintassi: char *strdup(const char *s);
Questa funzione restituisce un puntatore a una stringa di byte con terminazione null, che è un duplicato della stringa puntata da S . La memoria ottenuta viene eseguita dinamicamente utilizzando malloc e quindi può essere liberata utilizzando free() .
Restituisce un puntatore alla stringa duplicata S .
Di seguito è riportata l'implementazione C per mostrare l'uso della funzione strdup() in 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;> }>

Produzione:

GeeksForGeeks 

strndup() :
sintassi: char *strndup(const char *s, size_t n);
Questa funzione è simile a strdup(), ma al massimo copia N byte.
Nota : Se s è più lungo di n, vengono copiati solo n byte e alla fine viene aggiunto un NULL (' ').
Di seguito è riportata l'implementazione C per mostrare l'uso della funzione strndup() in 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;> }>

Produzione:

Geeks 

Vediamo le differenze in forma tabellare:

strdup() strndup()
1. Viene utilizzato per restituire un puntatore a una stringa di byte con terminazione null, Viene utilizzato per restituire un puntatore a una stringa di byte con terminazione null
2. La sua sintassi è -:
char *strdup( const char *str1 );

La sua sintassi è -:

char *strndup( const char *str, size_t dimensione );

3. È definito in file di intestazione È definito in file di intestazione
4. È necessario solo un parametro che sia puntatore alla stringa di byte con terminazione null da duplicare

Sono necessari due parametri:
1.puntatore alla stringa di byte con terminazione null da duplicare

2. numero massimo di byte da copiare da str

5. Il suo valore restituito è un puntatore alla stringa appena allocata. Restituisce un puntatore nullo se si è verificato un errore.

Riferimento: Uomo Linux(7)