关于C语言拷贝函数的随笔


工作上要用到这些函数,稍微理解了一下这些函数的分别,写一篇简短的随笔:

1、char *strcpy(char *dest, char *src); 这个函数把src所指由'\0'结束的字符串复制到dest所指的数组中。 src和dest所指内存区域不可以重叠且dest必须有足够的空间来容纳src的字符串。 当src串长度>dest串长度时,程序仍会将整个src串复制到dest区域,可是dest数组已发生溢出。

2、char * strncpy(char *dest, char *src, size_t,n); 将字符串src中最多n个字符复制到字符数组dest中(它并不像strcpy一样遇到NULL才停止复制,而是等凑够n个字符才开始复制),返回指向dest的指针。

3、void *memcpy(void *dest, const void *src, size_t n);由src指向地址为起始地址的连续n个字节的数据复制到以dest指向地址为起始地址的空间内。.source和destin所指内存区域不能重叠,函数返回指向destin的指针。 与strcpy相比,memcpy并不是遇到'\0'就结束,而是一定会拷贝完n个字节。 如果目标数组destin本身已有数据,执行memcpy()后,将覆盖原有数据(最多覆盖n)。如果要追加数据,则每次执行memcpy后,要将目标数组地址增加到你要追加数据的地址。

相关内容