В чем разница между 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() носит более общий характер. Какой-либо причине?

Ответы на вопрос(3)

Ваш ответ на вопрос