C sprintf 拷贝异常
对于非安全的sprintf字符串拷贝函数,有时会发现,拷贝后的目的字符串输出后末尾会有乱码,或者目的字符串并没有得到想要的值,且源字符串的值也被改变了。
其实根本原因在于:1、对于字符串,系统需要获得该字符串的终止符,也就是需要知道该字符串的终止位置,若源字符串和目的字符串大小一致,则会出现上述问题,最保险的方法应该是为目的字符串申请至少大于源字符长度1个字节的空间;2、由于sprintf中间的format参数,会默认源字符串具有该指定类型的长度,如果为其申请的目的字符串长度不足,则会溢出,不仅拷贝失败,而且也会影响源字符串的值。
所以,一定要注意目的字符串的长度。