下面程序段的运行结果是( ).char *p="abcdefgh"; p+=3; printf("%d\n",strlen(strcpy(p,"ABCD")为什么不是7."abcABCD"?急

来源:学生作业帮助网 编辑:作业帮 时间:2024/05/06 20:24:50
下面程序段的运行结果是( ).char *p=

下面程序段的运行结果是( ).char *p="abcdefgh"; p+=3; printf("%d\n",strlen(strcpy(p,"ABCD")为什么不是7."abcABCD"?急
下面程序段的运行结果是( ).char *p="abcdefgh"; p+=3; printf("%d\n",strlen(strcpy(p,"ABCD")
为什么不是7."abcABCD"?急

下面程序段的运行结果是( ).char *p="abcdefgh"; p+=3; printf("%d\n",strlen(strcpy(p,"ABCD")为什么不是7."abcABCD"?急
halps 说得有道理
strcpy的实现代码
char * strcpy(char * strDest,const char * strSrc)
{
char * strDestCopy=strDest; //[3]
if ((strDest==NULL)||(strSrc==NULL)) //[1]
throw "Invalid argument(s)"; //[2]
while ((*strDest++=*strSrc++)!='\0'); //[4]
return strDestCopy;
}

函数把‘\0’也拷贝进去了的,而strlen也是取得‘\0’之前的