这篇文章是对memcpy()函数的简要介绍,并对这个函数做出几点重要的说明。
复制字符串的操作非常常见,为此C库为我们实现了这一操作并封装成函数,我们经常使用的就是strcpy()函数。但strcpy()函数功能在有的时候捉襟见肘,因此这里介绍功能强大很多的memcpy()函数用法。
首先当然是函数原型,void *memcpy(void*dest, const void *src, size_t n);
这个函数同strcpy()函数一样定义在<string.h>中。
关于这个函数的几点说明:
1.dest 是复制内容的目标位置,src是要复制的内容的起始位置,size_t n是复制内容的字节数。
2.memcpy()是复制数据的函数(当然常用来复制字符串),它可以复制任意类型的数据。这也就是第一点中一直在说是复制内容,没有说是复制字符串的原因。由这给出第三点说明。
3.memcpy()完全按照说明去复制所有数据,尤其当用来复制字符串时不会因为‘\0’的存在而停止,原因应该已经说得很清楚了。
到这里,应该可以看到memcpy() 复制数据强大了吧。但就复制字符串来说,它可以任意指定所要连续复制的长度,这一点是strcpy()无法实现的。下面是memcpy()的一个简单的使用栗子。代码的意思应该很清楚了,读者自己理解一下就好。
char a[100],b[50];
memcpy(a+10,b+10*sizeof(char),5*sizeof(char));