标题:請問區別在何方!
只看楼主
guochen3
Rank: 1
等 级:新手上路
帖 子:63
专家分:0
注 册:2006-1-16
得分:0 

我要發問了。
為什麼stpcpy(stpcpy(d,s1),s2);
顯示的不是123456789abcdef而是
6789abcdef.因為他返回的地址是
d+strlen(s)
第一次運行stpcpy(d,s1),時就把d的內容覆蓋了
第二次運行stpcpy(d,s2),時就應該也把d的內容覆蓋呀。
如果不是覆蓋那他就和strcat一樣才是呀。比如:
main()
{ char *s1="6789a",*s2="bcdef";
char d[20]="12345";
stpcpy(d,s1);getch();printf("%s",d);
stpcpy(d,s2);

printf("%s\n",d);
getchar();
return 0;
}和
main()
{ char *s1="6789a",*s2="bcdef";
char d[20]="12345";
strcpy(d,s1);getch();printf("%s",d);
strcpy(d,s2);

printf("%s\n",d);
getchar();
return 0;
}結果一樣。


雖然我很菜,但我永不言放棄。
2006-05-26 16:29
–★–
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:1512
专家分:0
注 册:2006-5-1
得分:0 
為什麼stpcpy(stpcpy(d,s1),s2)
顯示的不是123456789abcdef而是
6789abcdef.因為
stpcpy(d,s1)返回的地址是d+strlen(s1)
进而
stpcpy(stpcpy(d,s1),s2)返回的地址是
d+strlen(s1)+strlen(s2)
因而,d[]中的内容是s1串与s2串的合并。

落霞与孤鹜齐飞,秋水共长天一色! 心有多大,路有多宽。三教九流,鸡鸣狗盗。兼收并蓄,海纳百川。
2006-05-26 18:36



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-67285-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.255780 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved