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 strncat

La fonction strlen La fonction strncmp


Entête à inclure

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

Fonction strncat

char * strncat( char * destination, const char * source, size_t size  );                       // Avant C99
char * strncat( char * restrict destination, const char * restrict source, size_t size  );     // A partir de C99

Cette fonction permet de concaténer à une chaîne de caractères déjà existante le contenu d'une seconde, dans la limite d'un nombre maximal de caractères. Bien entendu le bloc de mémoire devant recevoir le contenu à concaténer doit être alloué de manière à être suffisament grand pour contenir la totalité des deux chaînes de caractères.

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 strncat garanti qu'à la fin de la concaténation, un zéro terminal sera bien produit (même si la limite du nombre de caractères est atteinte).

Paramètres

Valeur de retour

La fonction renvoie l'adresse de la chaîne résultante de la concaténation : cela peut permettre de cascader plusieurs appels à la fonction strncat ou à strcat.

Exemple de code

Voici un exemple d'utilisation de la fonction strncat.

 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 
 29 
 30 
#include <ctype.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>


int main() {

    // Lecture d'un code à trois lettres
    char buffer[10];        // Buffer plus grand, au cas ou.
    printf( "Veuillez saisir un code de trois lettres : " );
    fflush( stdout );
    scanf( "%s", buffer );

    // Première lettre en majuscule, les autres en minuscules
    buffer[0] = toupper( buffer[0] );
    buffer[1] = tolower( buffer[1] );
    buffer[2] = tolower( buffer[2] );

    // Génération d'une chaîne à partir de la clé
    char key[8];
    strcpy( key, "code" );
    strncat( key, buffer, 3 );

    // Affichage de la clé
    printf( "%s\n", key );


    return EXIT_SUCCESS;
}
Exemple d'utilisation de la fonction strncat

Et voici un exemple d'utilisation de notre programme :

$> gcc -o sample sample.c
$> ./sample
Veuillez saisir un code de trois lettres : aZeRtY
codeAze
$>

Sujets connexes

malloc
strcat
strcpy
strlen


La fonction strlen La fonction strncmp