char数组和strcpy的讨论
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | #include <iostream> using namespace std; void main() { char *buffer = new char (10); printf( "before: %s\n" ,buffer); char temp[5] = { '1' , '2' , '3' , '4' , '5' }; //error,因为只分配5个空间,并且全占满,那么在11行的strcpy函数执行后,buffer中就没有null来表示字符串的结束了,而就是{'1','2','3','4','5','未知','未知','未知','未知','未知'} //char temp[6] = {'1','2','3','4','5'}; //fine strcpy(buffer,temp); printf( "after: %s\n" ,buffer); } |
如果使用chartemp[5] = {'1','2','3','4','5'};那么这个size为5的数组里最后一个元素为5,而不是null,所以strcpy(buffer,temp);了以后,buffer中的内容为{'1','2','3','4','5','未知','未知','未知','未知','未知'},那么没有'\0'结尾的话,就会出现读程序异常了。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步