strndup
|
Défini dans l'en-tête
<string.h>
|
||
|
char
*
strndup
(
const
char
*
src,
size_t
size
)
;
|
(depuis C23) | |
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
src
. L'espace pour la nouvelle chaîne est obtenu comme si
malloc
était appelé. 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 pourrait être défini.
Table des matières |
Paramètres
| src | - | pointeur vers la chaîne d'octets terminée par un caractère nul à dupliquer |
| size | - |
nombre maximal d'octets à copier depuis
src
|
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
#include <string.h> #include <stdio.h> #include <stdlib.h> int main(void) { const size_t n = 3; const char *src = "Replica"; char *dup = strndup(src, n); printf("strndup(\"%s\", %lu) == \"%s\"\n", src, n, dup); free(dup); src = "Hi"; dup = strndup(src, n); printf("strndup(\"%s\", %lu) == \"%s\"\n", src, n, dup); free(dup); const char arr[] = {'A','B','C','D'}; // NB: pas de '\0' final dup = strndup(arr, n); printf("strndup({'A','B','C','D'}, %lu) == \"%s\"\n", n, dup); free(dup); }
Sortie :
strndup("Replica", 3) == "Rep"
strndup("Hi", 3) == "Hi"
strndup({'A','B','C','D'}, 3) == "ABC"
Voir aussi
|
(C23)
|
alloue une copie d'une chaîne de caractères
(fonction) |
|
(C11)
|
copie une chaîne de caractères vers une autre
(fonction) |
|
alloue de la mémoire
(fonction) |
|
|
libère la mémoire précédemment allouée
(fonction) |