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()
?