strcpy/sprintf/memcpy的区别及适用场景

char*strcpy(char *dest, const char *src);

其对字符串进行操作,完成从源字符串到目的字符串的拷贝,当源字符串的大小大于目的字符串的最大存储空间后,执行该操作会出现段错误。

int sprintf(char*str, const char *format, ...)

函数操作的源对象不限于字符串:源对象可以是字符串、也可以是任意基本类型的数据。主要是实现将其他数据类型转换为字符串。

void *memcpy(void*dest, const void *src, size_t n)

实现内存的拷贝,实现将一块内存拷贝到另一块内存。该函数对源对象与目的对象没有类型限制,只是对内存的拷贝。

适用区别:

在拷贝过程中,strcpy与sprintf遇到源字符中有‘\0’(即ascii码为00)时会认为数据结束,停止拷贝,使用memcpy就不会出现这种情况。

注:听前辈说在拷贝升级软件时会遇到这种情况。

发布了20 篇原创文章 · 获赞 6 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/weixin_36662608/article/details/53674212