В чем разница между memcpy () и strncpy (), учитывая, что последний может легко заменить первый?
В чем разница междуmemcpy()
а такжеstrncpy()
? Я спрашиваю это, потому что мы можем легко изменитьstrncpy()
скопировать любой тип данных, который мы хотим, а не только символы, просто приведя первые дваchar*
аргументыchar*
и изменение третьего аргумента, кратного размеру этого не-символьного типа. В следующей программе я успешно использовал это для копирования части целочисленного массива в другую, и она работает так же хорошо, как и.memcpy()
#include
#include
int main ()
{
int arr[2]={20,30},brr[2]={33,44};
//memcpy(arr,brr,sizeof(int)*1);
strncpy((char*)arr,(char*)brr,sizeof(int)*1);
printf("%d,%d",arr[0],arr[1]);
}
Точно так же мы можем заставить его работать наfloat
или другой тип данных. И что'Значительная разница от?memcpy()
PS: Кроме того, мне интересно, почемуmemcpy()
вstring.h
заголовочный файл, учитывая, что почти все функции библиотеки там связаны со строками символов, в то время какmemcpy()
носит более общий характер. Какой-либо причине?