请教老师字串去除程式
/*字串去除程式*/#include<stdio.h>
#include<stdlib.h>
void exclude(char*,char*);
int main(voed)
{
char str1[]="what a good world!";
char str2{}="good"; //要去除的字串
exclude(str1,str2);
puts(str1);
system("pause");
return 0;} //到此为止我是明白的,以下就是我不太明白的地方
void exclude(char *s1,char *s2)
{
int i, s2_len=strlen(s2);
for(i=0; i<(int)strlen(s1)-s2_len; i++){
if(!strncmp(s1+i,s2,s2_len)){
strcpy(s1+i,s1+i+s2_len);
i--;
}
}
}
书中的解释是:自定义函数exclude(),使用strncmp检查在s1中是否有和s2相同的部分。如果有
相同,则以后方的字串使用strcpy()函数来复制覆盖。在本例中s1中的good和s2字串相同,所以s1的good
字串被s1后方的字串word!字串盖过。
我不明白的是:s1中的good和s2字串相同,所以s1的good
字串被s1后方的字串word!字串盖过。为什么?具体的程式是strcpy(s1+i,s1+i+s2_len);这就表示盖过了?我看不懂,
还有i--是什么意思?
感谢哪位高手能指教一下,谢谢