相关函数: bcopy(), memccpy(), memmove(), strcpy(), strncpy()
表头文件: #include <string.h> 定义函数: void *memcpy(void *dest, const void *src, size_t n) 函数说明: memcpy()用来拷贝src所指的内存内容前n个字节到dest所指的内存地址上。与strcpy()不同的是,memcpy()会完整的复制n个字节,不会因为遇到字符串结束'\0'而结束 返回值: 返回指向dest的指针 附加说明: 指针src和dest所指的内存区域不可重叠
原型声明:extern char *strcpy(char* dest, const char *src); 头文件:#include <string.h> 功能:strcpy()把从src地址开始且含有"\0"(NULL) 结束符的字符串复制到以dest开始的地址空间,遇到“\0”字符串结束符,复制结束。 说明:src和dest所指内存区域不可以重叠且dest必须有足够的空间来容纳src的字符串。 返回指向dest的指针。
\0代表字符数串的结束标志 也就是字符数组的最后一位加上的'\0' \0的ASCII码为0,也就是空字符
测试代码:
运行结果:#include <string.h> #include <stdio.h> int main() { char a[30] = "string (a)"; char b[30] = "hi\0zengxiaolong"; int i; strcpy(a, b); //a[30] = "hi\0ing (a)" printf("strcpy():"); for(i = 0; i < 30; i++) printf("%c", a[i]); //hi ing (a) memcpy(a, b, 30); //a[30] = "hi\0zengxiaolong" printf("\nmemcpy():"); for(i = 0; i < 30; i++) printf("%c", a[i]); //hi zengxiaolong printf("\n i = %d\n", i); //30 }
root@android-desktop:/zhanli/test/memcpy_strcpy# gcc -o test memcpy_strcpy.c root@android-desktop:/zhanli/test/memcpy_strcpy# ./test strcpy():hiing (a) memcpy():hizengxiaolong i = 30