【c语言】strcpy、strncpy与memcpy三者的区别-创新互联

strcpy()

strcpy()用来复制字符串

创新互联建站是专业的易县网站建设公司,易县接单;提供成都做网站、网站设计,网页设计,网站设计,建网站,PHP网站建设等专业做网站服务;采用PHP框架,可快速的进行易县网站开发网页制作和功能扩展;专业做搜索引擎喜爱的网站,专业的做网站团队,希望更多企业前来合作!

其原型为
char* strcpy(char * destn, const char * src );

  1. dest 为目标字符串指针,src 为源字符串指针。
  2. strcpy() 把src所指的由NULL结束的字符串复制到dest 所指的数组中,返回指向 dest 字符串的起始地址。
  3. 源字符串必须以 ‘\0’ 结束。
  4. 目标空间必须足够大,以确保能存放源字符串。
  • 仅用于复制字符串,不仅会复制字符串的内容,还会将源字符串中的 ‘\0’ 拷贝到目标空间。
strncpy

strncpy()用来复制字符串的前n个字符

其原型为
char * strncpy ( char * dest, const char * src, size_t num );

  1. dest 为目标字符串指针,src 为源字符串指针,num为拷贝的字读数。
  2. strncpy()会将字符串src前n个字符拷贝到字符串dest。
  3. 如果源字符串的长度小于num,则拷贝完源字符串之后,在目标的后边追加0,直到num个。
  4. 一旦遇到0以后,后面被拷贝的字节就全部是 0
  • 仅用于复制字符串,并且是指定的前n个字符,但不会追加结束符’\0’
memcpy

memcpy()提供了一般内存的复制,对于需要复制的内容没有限制

其原型为
void * memcpy ( void * dest, const void * src, size_t num );

dest 为目标指针,src 为源指针。num为字节数。
memcpy()会将src前n个字节拷贝到dest中。

  • 可以复制任意内容,不仅限于字符串,同时也需要指定复制长度。
总结
  1. strcpy只能复制字符串,并且是整个字符串
    strncpt只能复制字符串,但可以指定个数
    memcpy可以复制任意类型的数据,并且可以指定个数
  2. strcpy遇到被复制字符的串结束符"\0"才结束,所以容易溢出。
    strncpy,memcpy则是根据其第3个参数决定复制的长度。
  3. strncpy一旦遇到0以后,后面被拷贝的字节就全部是 0。
    memcpy 是不关注被拷贝的内容是什么的。
  4. 复制字符串时用strcpy,strncpy,而需要复制其他类型数据时则一般用memcpy。

你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧


文章名称:【c语言】strcpy、strncpy与memcpy三者的区别-创新互联
转载注明:http://scyanting.com/article/dooieo.html