strncpy() : copie partielle d'une chaîne de caractères.
Prototype
char *strncpy(char *dest, const char *sce, size_t long);
dans: < string.h>
Description
strncpy() copie jusqu'à 'long' caractères de la chaîne 'sce' vers l'adresse 'dest'.
Soit ls = strlen(sce) :
si ls< long alors ls caractères sont copiés et long-ls caractères '\0' sont placés ensuite.
si ls> long alors long caractères sont copiés (pas d'octet '\0' placé dans dest)
Attention: vous devez être sûr que la zone mémoire d'adresse dest est de taille suffisante pour recevoir long caractères.
Valeur renvoyée
l'adresse dest
Voir aussi
strcpy()
Portabilité
DOS,
UNIX,
norme
ANSI
Exemple
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
| /*
La première utilisation de strncpy() permet de voir que ce sous-programme
ne place pas l'octet '\0' de marque de fin de chaîne si long< strlen(sce).
La deuxième utilisation permet de voir que ce sous-programme recopie un
certains nombre de fois l'octet '\0' si long > strlen(sce).
*/
#include < stdio.h>
#include < string.h>
int main(void) {
char string[]= "0123456789";
char *str1 = "bonjour a tous";
char *str2 = "***";
int i;
strncpy( string, str1, 7);
printf("%s\n", string);
string[7] = '\0'; /* string=bon */
printf("%s\n", string);
strncpy( string, str2, 5);
for( i=0; i< 10; i++ ) printf( "%4d", string[i] );
printf("\n");
return 0;
} |
Partager