逻辑就是将不是'H'的字符,放到这个数组从头开始的位置进行覆盖,最后将字符串结束符位置提前,这样字符串就只剩下非'H'字符了
比如输入"ABHCHD"
i和j都是遍历变量。都从A开始,判断A不是'H',那么A放到数组开头,也就是j表示的位置(这里实际'A'位置没有变),当检查到'H'字符时,忽略,i继续指向下一个'C'字符,检查不是'H',则放到j指向位置,j肯定指向刚才'H'的位置,这样C就替代了H位置,最后ABCD会放置到数组开头部分,再将D后面的字符改为字符串结束符。这样用%s输出的就只有ABCD了,实现'H'字符的删除效果
i j 都是字符串数组 s[] 的下标位置,刚开始时 i = j =0 是同步的,当碰到待删除的字符如 ‘H' 时,if(s[i] != 'H') 条件不满足,s[j++] = s[i] 这句就不被执行到, 相当于 j 所在的位置就暂停了一次,但 i ++ 被执行,j 和 i 就不同步了,实现了用后一个字符覆盖前一个字符的作用。
不知道你这个问题是否已经解决, 如果还没有解决的话: