头文件:#include <string.h>
bcopy() 函数用来复制内存(字符串),其原型为:
void bcopy(const void *src, void *dest, int n);
【参数】src 为源内存块(字符串)指针,dest 为目标内存块(字符串)指针,n 为要复制的内存(字符串)的前 n 个字节长度。
bcopy()与memcpy()一样都是用来拷贝src 所指的内存内容前n 个字节到dest 所指的地址,不过参数src 与dest 在传给函数时是相反的位置。
bcopy() 不检查内存(字符串)中的空字节 NULL。
实际上,bcopy() 和 memcpy() 功能相同,用来复制内存块的前 n 个字节,但是 s1, s2 两个参数为指针,又很奇怪的位于 string.h 文件中,所以也可以用来复制字符串。
注意:bcopy() 不是标准函数,没有在ANSI中定义,笔者在VC6.0和MinGW5下编译没通过;据称Linux下的GCC支持,不过笔者没有亲测。鉴于此,还是使用 memcpy() 替代吧。
更多信息请查看:C语言bcopy()和memcpy()、bzero()和memset()、bcmp()和memcmp()几个函数的差别
笔者定义了一个宏,在VC6.0下编译通过,代码如下:
#include <stdio.h>
#include <string.h>
#define bcopy(a, b, c) memcpy(a, b, c)
main(){
char dest[30] = "string(a)";
char src[30] = "string\0string";
int i;
bcopy(src, dest, 30); //src 指针放在前
printf("bcopy(): ");
for(i = 0; i < 30; i++)
printf("%c", dest[i]);
memcpy(dest, src, 30); //dest 指针放在钱
printf("\nmemcpy() : ");
for(i = 0; i < 30; i++)
printf("%c", dest[i]);
}
执行结果: