问一个strcpy相关的问题

来源:百度知道 编辑:UC知道 时间:2024/05/26 19:47:01
我使用strcpy的时候总是容易出现这样那样的错误,
希望大家能结合自己的经验给讲一讲都有什么注意点,谢谢

希望结合自身的总结,贴长篇大论的就别来了

一般得注意以下几个方面:
1. 注意目标串的存储空间应该是初始化完毕的,有效的空间
这个比较好理解,这是为了防止野指针访问,无效地址访问
2. 注意目标串的size应该不小于原串
这个是为了防止溢出
3. 注意目标串和原串的存储空间不要重叠(如果故意这么做的话,除外)
如果目标串在前,就会部分覆盖原串,导致原串被改写
如果原串在前,就会导致原串的串尾符被目标串覆盖,拷贝无法结束,出现异常

再给你贴一段MSDN的注解:
The strcpy function copies strSource, including the terminating null character,
to the location specified by strDestination.
The behavior of strcpy is undefined if the source and destination strings overlap.

1.是对字符串操作,不是字符。char *s;strcpy(s,"a");不是strcpy(s,'a');
对于string类,不用strcpy()函数,还有他的返回值,你要清楚1,0 ,-1,不是bool,使用if时小心