C语言问题求大佬解答

strcpy 不是取代str1+6的前7个字符吗,为什么会得到这个结果。
2025-04-28 22:48:04
推荐回答(3个)
回答1:

strcpy(char*_Destination,char*_Source),将_Source字符串复制到到_Destination内存空间;

  1. 首先strlen(str1) / 2=6

  2. str1+strlen(str1) / 2 →str1+6→str[6]的地址,也就是从"How do you do"字符串的第七个字符(y字符前的空格字符)开始被替换成"es she"字符串。由于" you do"字符串长度为7+1('\0')字符,以及"es she"字符串长度为6+1('\0')字符,最后输出为"How does she"。

  3. "How do you do"字符串最后的'\0'字符没有替换,所以考虑到'\0'字符,最后的输出结果可以看成"How does she\0\0"。es she\0为被替换成的字符串,也就是"es she"

回答2:

我们不妨用冖代表一个空格。
1、str1是“How冖do冖you冖do”
2、strlen(str1) 的值是13
3、strlen(str1) /2的值是6
4、str1代表首字母H的地址
5、str1+strlen(str1) /2的值H的地址+6,即“do冖you” 之间那个空格的地址
6、用来置换的字符串是“es冖she”,共6个字符,连同结束符0共7个
7、被置换的就是从那个空格开始的7个字符“冖you冖do"
8、就是用【es冖she`0`】置换“How冖do【冖you冖do】”中用黑括号括起来的部分。
9、替换的结果是“How冖does冖she"外加一个字符串结束符。
10、所以,程序输出的结果是:
How冖does冖she
有什么问题请留言。

回答3:

是从str1+6的位置开始复制后面的字符串,
输出应该是“How do es she”