Rechercher
 

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 :

Fonction strdup (C2x)

La fonction strcspn La fonction strerror


Entête à inclure

#include <string.h>  // <cstring> en C++

Fonction strdup (C2x)

char * strdup( const char * source );

Cette fonction permet de dupliquer une chaîne de caractères.

la fonction strdup alloue une nouvelle zone de mémoire via la fonction malloc afin d'y copier 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.

En langage C, les chaînes de caractères sont qualifiées d'AZT : A Zéro Terminal. Cela signifie qu'une chaîne de caractères se termine forcément par un code ASCII nul (pouvant aussi être représenté par '\0'). La fonction strdup copiera chaque caractère, un à un, jusqu'à atteindre ce fameux code ASCII nul. Au passage, il sera lui aussi copié.

Paramètre

Valeur de retour

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é.

Exemple de code

 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 la chaîne de caractères initiale.
    char * copy = strndup( original );
    
    // 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;
}
Exemple d'utilisation de la fonction strdup

Et voici le résultat produit par cet exemple de code.

$> gcc -o sample sample.c
$> ./sample
THE ORIGINAL STRING.
$> 

Sujets connexes

free
strcat
strcmp
strcpy
strlen
strndup


La fonction strcspn La fonction strerror