Vous êtes un professionnel et vous avez besoin d'une formation ?
Programmation avec
Le langage C
Voir le programme détaillé
Fonction strncpy
Entête à inclure
#include <string.h> // <cstring> en C++
Fonction strncpy
char * strncpy( char * destination, const char * source, size_t length ); // Avant C99
char * strncpy( char * restrict destination, const char * restrict source, size_t length ); // A partir de C99
Cette fonction permet de copier le contenu d'une chaîne de caractère dans une autre, dans la limite de length
caractères.
Plusieurs cas peuvent être considérés :
-
Si la chaîne source a une taille inférieure à celle spécifiée en paramètre (paramètre length), alors la chaîne de destination sera complétée
avec des codes ASCII nuls (caractère '\0').
-
Si la chaîne source a une taille supérieure à celle spécifiée en paramètre, alors la chaîne produite ne sera pas terminée par un code ASCII nul
(caractère '\0'). Il sera alors de votre responsabilité de l'ajouter si vous souhaitez exploiter correctement la chaîne produite. En effet,
n'oubliez pas qu'en C on manipule des chaînes AZT (A Zéro Terminal).
-
Si la chaîne source a une taille égale à celle spécifiée en paramètre, alors la chaîne source sera intégralement copiée
(y compris le code ASCII 0 terminal).
Rappel : 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'
).
Paramètres
-
destination : permet de spécifier l'adresse de la chaîne de caractère devant recevoir le contenu de l'autre. Vous devez avoir pré-alloué ce bloc de
mémoire avec la taille suffisante pour recevoir la chaîne à copier. Cette allocation pourra être réalisée via la fonction
malloc
.
-
source : permet de définir l'adresse de la chaîne de caractères à dupliquer.
-
length : represente le nombre de caractères maximal à recopier dans destination.
Valeur de retour
La fonction renvoie l'adresse de la chaîne dupliquée. Attention, elle ne sera pas forcément terminée par un caractère '\0'.
Exemple de code
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
define SHORT_LENGTH 10
int main() {
const char * longString = "A long message";
char buffer[ SHORT_LENGTH ];
strncpy( buffer, longString, SHORT_LENGTH );
if ( strlen( longString ) >= SHORT_LENGTH ) {
puts( "Must add last '\\0' character." );
buffer[ SHORT_LENGTH -1 ] = '\0';
}
puts( buffer );
return 0;
}
Sujets connexes
Vous êtes un professionnel et vous avez besoin d'une formation ?
Programmation avec
Le langage C
Voir le programme détaillé
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 :