Изменить: я добавил источник для примера.
Я наткнулся на такой пример :
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 );
Что произвело этот вывод:
пункт назначения изначально = 'abcdefg' После strcpy пункт назначения становится '123456789' destination1 изначально = 'abcdefg' После strncpy destination1 становится '12345fg'
Это заставляет меня задуматься, зачем кому-то нужен этот эффект. Похоже, это сбивает с толку. Эта программа заставляет меня думать, что вы можете скопировать чье-то имя (например, Том Брокоу) с помощью Tom Bro763.
Какие преимущества использования strncpy()
сверх strcpy()
?
strcpy
вместоstrncpy
?»