#include <string.h> // <cstring> en C++
char * strndup( const char * source, size_t size );
Cette fonction permet de dupliquer au plus size
caractères de la chaîne passée en paramètre.
strndup
alloue une nouvelle zone de mémoire via la fonction malloc
afin d'y copier tout ou une partie de la chaîne de caractères initiale. Il est donc impératif de libérer cette zone de mémoire après utilisation via
la fonction free
.
'\0'
). La fonction strndup
garantit aussi que ce code
terminal sera présent dans la chaîne.
S'il y a suffisament de mémoire pour produire la nouvelle chaîne, la fonction renvoie l'adresse de la chaîne dupliquée. Dans le cas contraire, un pointeur nul vous sera retourné.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
#include <ctype.h> #include <stdio.h> #include <stdlib.h> #include <string.h> int main() { const char * original = "The original string."; // On duplique au plus 12 caractères de la chaîne initiale. char * copy = strndup( original, 12 ); // On passe chaque lettre en majuscule. char * ptr = copy; while( *ptr != '\0' ) { *ptr = toupper( *ptr ); ptr++; } // On affiche la chaîne finale printf( "%s\n", copy ); // Sans oublier de libérer l'espace mémoire au final. free( copy ); return EXIT_SUCCESS; } |
Et voici le résultat produit par cet exemple de code.
$> gcc -o sample sample.c $> ./sample THE ORIGINAL $>
Améliorations / Corrections
Vous avez des améliorations (ou des corrections) à proposer pour ce document : je vous remerçie par avance de m'en faire part, cela m'aide à améliorer le site.
Emplacement :
Description des améliorations :