#include <string.h> // <cstring> en C++
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).
malloc
.
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
.
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; } |
Et voici un exemple d'utilisation de notre programme :
$> gcc -o sample sample.c $> ./sample Veuillez saisir un code de trois lettres : aZeRtY codeAze $>
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 :