void delete _string(char str[],char ch) { int i,j; for()i=j=0;str[i]!='\0';i++) if(str[i]!=ch)
str[j++]=str[i];str[j]='\0';}这函数是删除字符窜内一个字符,求解释原理,特别是最后一个语句...
str[j++]=str[i];
str[j]='\0';
} 这函数是删除字符窜内一个字符,求解释原理,特别是最后一个语句 展开
str[j]='\0';
} 这函数是删除字符窜内一个字符,求解释原理,特别是最后一个语句 展开
推荐于2018-04-30
展开全部
void delete _string(char str[],char ch)
{
int i,j;
for(i=j=0;str[i]!='\0';i++)
if(str[i]!=ch)
str[j++]=str[i];
str[j]='\0';
}
实际上是通过两个下标来完成的,你可以看到 i 和 j 都是从0开始的,
if(str[i]!=ch)
str[j++]=str[i];
如果str[i]!=ch的话执行str[j++]=str[i];
这等价于str[j]=str[i],在之前如果没有出现ch这个字符 i 和 j 就会同时++,这样 i 和 j 的值是相等的,当然str[j]和str[i]也是想等的,如果str[i]==ch就会跳过str[j++]=str[i];
j 就不会++,这样一来 j 就会比 i 小1,str[j++]=str[i];这样就是把str[i](等于ch的那个)之后的每个字符一次向前移动一个,所以就完成了删除字串中一个字符的功能。
{
int i,j;
for(i=j=0;str[i]!='\0';i++)
if(str[i]!=ch)
str[j++]=str[i];
str[j]='\0';
}
实际上是通过两个下标来完成的,你可以看到 i 和 j 都是从0开始的,
if(str[i]!=ch)
str[j++]=str[i];
如果str[i]!=ch的话执行str[j++]=str[i];
这等价于str[j]=str[i],在之前如果没有出现ch这个字符 i 和 j 就会同时++,这样 i 和 j 的值是相等的,当然str[j]和str[i]也是想等的,如果str[i]==ch就会跳过str[j++]=str[i];
j 就不会++,这样一来 j 就会比 i 小1,str[j++]=str[i];这样就是把str[i](等于ch的那个)之后的每个字符一次向前移动一个,所以就完成了删除字串中一个字符的功能。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询