《C程序设计语言》第二版的习题5.1:用指针的方式实现strcat即字符串连接函数。这个是可以实现的#includevoidstrcatp(char*s,char*t);intmain(){ chars[]="Hello"; chart[]="world!"; strcatp(s,t);printf(s); return0;}voidstrcatp(char*s,char*t){while(*s)s++;while(*s++=*t++) ;}输出结果为Helloworld!而这种却不行?#includevoidstrcatp(char*s,char*t);intmain(){ chars[]="Hello"; chart[]="world!"; strcatp(s,t);printf(s); return0;}voidstrcatp(char*s,char*t){while(*s++);while(*s++=*t++) ;}输出结果:Hello
2 回答
慕工程0101907
TA贡献1887条经验 获得超5个赞
关键的错误是while(*s)s++;在s指向\0时候停止增加指针。而while(*s++);在指向\0时候仍为指针增加了1。从而使得两段拼接的字符串中间存在\0,printf在这个中间点认为字符串已经结束。
叮当猫咪
TA贡献1776条经验 获得超12个赞
while(*s++);等于while(true){charc=*s;s++;if(!c)break;}而while(*s)s++;等于while(true){charc=*s;if(!c)break;s++;}
添加回答
举报
0/150
提交
取消