Namensräume
Varianten
Aktionen

strndup

Von cppreference.com
Definiert in Header <string.h>
char *strndup( const char *str, size_t size );
(Dynamischer Speicher-TR)

Gibt einen Zeiger auf eine nullterminierte Byte-Zeichenkette zurück, die Kopien von höchstens size Bytes aus der von str referenzierten Zeichenkette enthält. Wenn das Nullzeichen nicht in den ersten size Bytes angetroffen wird, wird es der duplizierten Zeichenkette hinzugefügt.

Der zurückgegebene Zeiger muss an free übergeben werden, um Speicherlecks zu vermeiden.

Bei einem Fehler wird ein Nullzeiger zurückgegeben und errno kann gesetzt werden.

Wie alle Funktionen aus dem Dynamic Memory TR ist strndup nur dann garantiert verfügbar, wenn __STDC_ALLOC_LIB__ von der Implementierung definiert ist und wenn der Benutzer __STDC_WANT_LIB_EXT2__ vor dem Einbinden von string.h auf die ganzzahlige Konstante 1 setzt.

Inhalt

[bearbeiten] Parameter

str - Zeiger auf die nullterminierte Byte-Zeichenkette, die dupliziert werden soll
size - maximale Anzahl von Bytes, die von str kopiert werden sollen

[bearbeiten] Rückgabewert

Ein Zeiger auf die neu zugewiesene Zeichenkette oder ein Nullzeiger, wenn ein Fehler aufgetreten ist.

[bearbeiten] Hinweise

Die Funktion ist identisch mit der POSIX strndup, mit der Ausnahme, dass sie bei einem Fehler errno setzen darf, aber nicht muss.

[bearbeiten] Beispiel

#ifdef __STDC_ALLOC_LIB__
#define __STDC_WANT_LIB_EXT2__ 1
#else
#define _POSIX_C_SOURCE 200809L
#endif
 
#include <string.h>
#include <stdio.h>
#include <stdlib.h>
 
int main(void)
{
    const char *s1 = "String";
    char *s2 = strndup(s1, 2);
    printf("strndup(\"String\", 2) == %s\n", s2);
    free(s2);
}

Ausgabe

strndup("String", 2) == St

[bearbeiten] Siehe auch

(Dynamischer Speicher-TR)
kopiert einen String, indem Speicher zugewiesen wird
(Funktion) [bearbeiten]
kopiert eine bestimmte Anzahl von Zeichen von einem String in einen anderen
(Funktion) [bearbeiten]
alloziert Speicher
(Funktion) [bearbeiten]