strdup()- und strndup()-Funktionen in C/C++
Der strdup() Und strndup() Funktionen werden verwendet, um eine Zeichenfolge zu duplizieren.
strdup() :
Syntax : char *strdup(const char *s);
Diese Funktion gibt einen Zeiger auf eine nullterminierte Bytezeichenfolge zurück, die ein Duplikat der Zeichenfolge ist, auf die von gezeigt wird S . Der erhaltene Speicher erfolgt dynamisch mit malloc und kann daher mit free() freigegeben werden.
Es gibt einen Zeiger auf die duplizierte Zeichenfolge zurück S .
Unten ist die C-Implementierung, um die Verwendung der Funktion strdup() in C zu zeigen:
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;> }> |
Ausgabe:
GeeksForGeeks
strndup() :
Syntax: char *strndup(const char *s, size_t n);
Diese Funktion ähnelt strdup(), kopiert jedoch höchstens N Bytes.
Notiz : Wenn s länger als n ist, werden nur n Bytes kopiert und am Ende ein NULL („ “) hinzugefügt.
Unten ist die C-Implementierung, um die Verwendung der Funktion strndup() in C zu zeigen:
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;> }> |
Ausgabe:
Geeks
Sehen wir uns die Unterschiede in tabellarischer Form an:
| strdup() | strndup() | |
| 1. | Es wird verwendet, um einen Zeiger auf eine nullterminierte Bytefolge zurückzugeben. | Es wird verwendet, um einen Zeiger auf eine nullterminierte Bytefolge zurückzugeben |
| 2. | Seine Syntax ist -: char * strdup( const char *str1 ); | Seine Syntax ist -: char *strndup( const char *str, size_t size ); |
| 3. | Es ist definiert in Header-Datei | Es ist definiert in Header-Datei |
| 4. | Es ist nur ein Parameter erforderlich, der auf die zu duplizierende nullterminierte Bytezeichenfolge verweist | Es werden zwei Parameter benötigt: 2. Maximale Anzahl von Bytes, die aus str kopiert werden sollen |
| 5. | Sein Rückgabewert ist ein Zeiger auf die neu zugewiesene Zeichenfolge. | Es gibt einen Nullzeiger zurück, wenn ein Fehler aufgetreten ist. |
Referenz: Linux-Mann(7)