Code Bye

关于strcpy的问题

标准的strcpy实现语句中有这样的一句
while((*a++ = *b++) != “\0”);
这样在判断b字符串到达”\0″时就跳出循环,但是这里是不是没有将”\0″复制给a?
在结束后能否要加上一句 *a = “\0″来给a字符串手动加上一个结束字符?
或是在创建a的时候初始化了,如memset(a,0,size)这样,也可以?
解决方案

16

假设b此时已经指向了最后一个字符(例如”abcde”中的e)
那么*a++ = *b++将”e”赋值给a,此时判断”e”!=”\0″为真,然后继续循环
然后b指向了”\0″,将”\0″赋值给a了

16

(*a++ = *b++) != “\0” 是先赋值,才进行判断

4

创建a的时候一般都建议要初始化才行,避免出现意外

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明关于strcpy的问题