strcpy()

strcpy()用来复制字符串

其原型为
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。
Logo

一站式 AI 云服务平台

更多推荐