Namespaces
Variants

strndup

From cppreference.net
Défini dans l'en-tête <string.h>
char * strndup ( const char * str, size_t size ) ;
(TR mémoire dynamique)

Retourne un pointeur vers une chaîne d'octets terminée par un caractère nul, qui contient des copies d'au plus size octets de la chaîne pointée par str . Si le terminateur nul n'est pas rencontré dans les premiers size octets, il est ajouté à la chaîne dupliquée.

Le pointeur retourné doit être passé à free pour éviter une fuite de mémoire.

Si une erreur se produit, un pointeur nul est retourné et errno peut être défini.

Comme toutes les fonctions du TR sur la mémoire dynamique, strndup n'est garantie d'être disponible que si __STDC_ALLOC_LIB__ est défini par l'implémentation et si l'utilisateur définit __STDC_WANT_LIB_EXT2__ à la constante entière 1 avant d'inclure string.h .

Table des matières

Paramètres

str - pointeur vers la chaîne d'octets terminée par un caractère nul à dupliquer
size - nombre maximum d'octets à copier depuis str

Valeur de retour

Un pointeur vers la chaîne nouvellement allouée, ou un pointeur nul si une erreur s'est produite.

Notes

La fonction est identique à la POSIX strndup sauf qu'elle est autorisée, mais pas obligée, à définir errno en cas d'erreur.

Exemple

#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);
}

Sortie :

strndup("String", 2) == St

Voir aussi

(dynamic memory TR)
alloue une copie d'une chaîne de caractères
(fonction)
copie un certain nombre de caractères d'une chaîne à une autre
(fonction)
alloue de la mémoire
(fonction)