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';
} 这函数是删除字符窜内一个字符,求解释原理,特别是最后一个语句
展开
 我来答
匿名用户
推荐于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的那个)之后的每个字符一次向前移动一个,所以就完成了删除字串中一个字符的功能。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式