设char*1=“12345”,s2=“1234”;执行语句printf(“%d\n”,strlen(strcpy(s1,s2)));后的输出结果是?

strcpy(s1,s2)函数,是将s2字符串组成新字符串存入s1中。那么结果是"123451234“还是"1234“。strlen函数为计算对应字符串的长度。那结果包括'\0’吗?如果,结果是123451234“那使用strlen函数结果为9还是10.求高手

strcpy(s1,s2)函数的返回值是s1
你这条语句执行的结果是“1234”,因为strcpy()函数是覆盖的,想不覆盖,而是接在后面,需要用函数strcat()
strlen计算的是字符串的长度,遇到\0'即停止,'\0'不包含在计算结果内
温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-01-10
渔:自己写测试程序看结果,实践是最好的老师。
鱼:
(1) strcpy是复制,不是追加,结果是”1234“,要是想要在后边追加,用strcat函数。
(2) strlen只计算字符串长度,不包括 '\0' 。所以对"123451234"做strlen运算是9
P.S. 初始化时要 char *s1="12345", *s2="1234"; 不然会出错的,因为s2如不是一个指针,它是不能指向一个字符串“1234”的首地址的。
第2个回答  2013-01-10
char* strcpy会出错。