1.完成字符串拷贝可以用sprintf,strcpy,memcpy函数,请问这些函数有什么区别,你喜欢用哪个,为什么?
分析: 这些函数的区别在于 实现功能和操作对象 不同。
1.strcpy函数操作的对象是字符串,完成从源字符串到目的字符串的拷贝。
2.sprintf操作的对象不限于字符串,虽然目的对象是字符串,但是源对象可以是字符串也可以是任意基本类型的数据。这个函数主要用来实现(字符串或基本数据类型)向字符串的转换。如果源对象是字符串,并且指定%s格式符,也可实现字符串拷贝。
3.memcpy函数是内存拷贝,实现将一个内存块的内容赋值到另一个内存块。内存块由首地址及其长度确定。因此,此函数的操作对象不局限于一类数据类型或者说可以用于任意数据类型,只要给出对象的起始地址和内存长度,并且对象可以被操作。
对于字符串拷贝功能来说上面三个函数都可以实现但是其实现的效率和易用度不同。
4.strcpy无疑是最合适的选择:效率高且使用方便。
5.sprintf要额外指定格式符并且进行格式转化,麻烦且效率不高。
6.memcpy虽然高效,但是需要额外指定内存长度这一参数,容易出错。并且如果长度过大(最优长度应该是源字符串长度+1),还会带来性能的下降。其实strcpy函数一般是在内部调用memcpy函数或者使用汇编直接实现的。因此使用strcpy和memcpy在拷贝字符串性能上差别不大。但是对于非字符串的数据类型来说就只有memcpy最方便了,其长处是实现对结构或者数组的拷贝。
转载于:https://blog.51cto.com/4893836/995362