Редагувати: я додав джерело для прикладу.
Я натрапив на такий приклад :
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' призначення1 спочатку = 'abcdefg' Після strncpy, destination1 стає '12345fg'
Що змушує мене дивуватися, чому хтось бажає цього ефекту. Схоже, це заплутало б. Ця програма змушує мене думати, що ви в основному можете скопіювати чиєсь ім’я (наприклад, Том Броков) за допомогою Тома Бро763.
Які переваги використання strncpy()
over strcpy()
?
strcpy
замість цьогоstrncpy
?"