memcpy()
和 和有什么显着区别strncpy()
?我问这个是因为我们可以很容易地改变strncpy()
以复制我们想要的任何类型的数据,而不仅仅是字符,只需将前两个非char*
参数转换为char*
并将第三个参数更改为该非字符类型大小的倍数。在下面的程序中,我已经成功地使用它来将一个整数数组的一部分复制到另一个中,它和memcpy()
.
#include <stdio.h>
#include <string.h>
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()
本质上更通用。任何原因?