Edit: j'ai ajouté la source pour l'exemple.
Je suis tombé sur cet exemple:
char source[MAX] = "123456789";
char source1[MAX] = "123456789";
char destination[MAX] = "abcdefg";
char destination1[MAX] = "abcdefg";
char *return_string;
int index = 5;
/* This is how strcpy works */
printf("destination is originally = '%s'\n", destination);
return_string = strcpy(destination, source);
printf("after strcpy, dest becomes '%s'\n\n", destination);
/* This is how strncpy works */
printf( "destination1 is originally = '%s'\n", destination1 );
return_string = strncpy( destination1, source1, index );
printf( "After strncpy, destination1 becomes '%s'\n", destination1 );
Qui a produit ce résultat:
la destination est à l'origine = 'abcdefg' Après strcpy, destination devient '123456789' destination1 est à l'origine = 'abcdefg' Après strncpy, destination1 devient "12345fg'
Ce qui me fait me demander pourquoi quelqu'un voudrait cet effet. Il semble qu'il serait source de confusion. Ce programme me fait penser que vous pourriez essentiellement de copier le nom de quelqu'un (par exemple. Tom Brokaw) avec Tom Bro763.
Quels sont les avantages de l'utilisation de strncpy()
sur strcpy()
?