Namespaces
Variants

strndup

From cppreference.net
Definiert in Header <string.h>
char * strndup ( const char * str, size_t size ) ;
(Dynamic Memory TR)

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

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

Wenn ein Fehler auftritt, wird ein Nullzeiger zurückgegeben und errno kann gesetzt werden.

Wie alle Funktionen aus dem Dynamic Memory TR ist strndup nur garantiert verfügbar, wenn __STDC_ALLOC_LIB__ durch die Implementierung definiert ist und wenn der Benutzer __STDC_WANT_LIB_EXT2__ auf den Integer-Konstantenwert 1 setzt, bevor string.h eingebunden wird.

Inhaltsverzeichnis

Parameter

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

Rückgabewert

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

Hinweise

Die Funktion ist identisch mit POSIX strndup , außer dass es erlaubt, aber nicht erforderlich ist, errno bei Fehlern zu setzen.

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

Siehe auch

(dynamic memory TR)
weist eine Kopie einer Zeichenkette zu
(Funktion)
kopiert eine bestimmte Anzahl von Zeichen von einer Zeichenkette in eine andere
(Funktion)
weist Speicher zu
(Funktion)