Dlaczego powinieneś używać strncpy zamiast strcpy?

Edytuj: Dodałem źródło dla przykładu.

przeszedłem przezten przykład:

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 );

Który wyprodukował to wyjście:

destination is originally = 'abcdefg'
After strcpy, destination becomes '123456789'

destination1 is originally = 'abcdefg'
After strncpy, destination1 becomes '12345fg'

Co mnie zastanawia, dlaczego ktoś chciałby tego efektu. Wygląda na to, że będzie mylące. Ten program sprawia, że ​​myślę, że można zasadniczo skopiować czyjeś imię (np. Tom Brokaw) z Tomem Bro763.

Jakie są zalety używania strncpy() koniec strcpy()?

questionAnswers(10)

yourAnswerToTheQuestion