【c语言】strcpy、strncpy与memcpy三者的区别
strcpy只能复制字符串,并且是整个字符串strncpt只能复制字符串,但可以指定个数memcpy可以复制任意类型的数据,并且可以指定个数**strcpy遇到被复制字符的串结束符"\0"才结束,所以容易溢出。strncpy,memcpy则是根据其第3个参数决定复制的长度。strncpy一旦遇到0以后,后面被拷贝的字节就全部是 0。memcpy 是不关注被拷贝的内容是什么的。复制字符串时用strc
·
strcpy()
strcpy()用来复制字符串
其原型为
char* strcpy(char * destn, const char * src );
- dest 为目标字符串指针,src 为源字符串指针。
- strcpy() 把src所指的由NULL结束的字符串复制到dest 所指的数组中,返回指向 dest 字符串的起始地址。
- 源字符串必须以 ‘\0’ 结束。
- 目标空间必须足够大,以确保能存放源字符串。
- 仅用于复制字符串,不仅会复制字符串的内容,还会将源字符串中的 ‘\0’ 拷贝到目标空间。
strncpy
strncpy()用来复制字符串的前n个字符
其原型为
char * strncpy ( char * dest, const char * src, size_t num );
- dest 为目标字符串指针,src 为源字符串指针,num为拷贝的字读数。
- strncpy()会将字符串src前n个字符拷贝到字符串dest。
- 如果源字符串的长度小于num,则拷贝完源字符串之后,在目标的后边追加0,直到num个。
- 一旦遇到0以后,后面被拷贝的字节就全部是 0
- 仅用于复制字符串,并且是指定的前n个字符,但不会追加结束符’\0’
memcpy
memcpy()提供了一般内存的复制,对于需要复制的内容没有限制
其原型为
void * memcpy ( void * dest, const void * src, size_t num );
dest 为目标指针,src 为源指针。num为字节数。
memcpy()会将src前n个字节拷贝到dest中。
- 可以复制任意内容,不仅限于字符串,同时也需要指定复制长度。
总结
- strcpy只能复制字符串,并且是整个字符串
strncpt只能复制字符串,但可以指定个数
memcpy可以复制任意类型的数据,并且可以指定个数 - strcpy遇到被复制字符的串结束符"\0"才结束,所以容易溢出。
strncpy,memcpy则是根据其第3个参数决定复制的长度。 - strncpy一旦遇到0以后,后面被拷贝的字节就全部是 0。
memcpy 是不关注被拷贝的内容是什么的。 - 复制字符串时用strcpy,strncpy,而需要复制其他类型数据时则一般用memcpy。
更多推荐




所有评论(0)