这个输出和我理解的怎么不一样?字符串数组中删除指定字符的问题

#include
#include
int main()
{
char ch[200],s;
int i,j,n;
gets(ch);
n =strlen(ch);
scanf("%c",&s);
for(i=0;i<n;i++)
{
if(ch[i]==s)
{
for(j=i;j<n;j++){ ch[j]=ch[j+1]; }
n=n-1;
i--;
}
}
puts(ch);
}

比如输入I love chips(ch) o(s)
我的理解是输出I lve chipss
但实际上它输出的是I lve chips 最后一个重复的字符s变成了'\0' 请问这是为什么啊?

因为
 for(j=i;j<n;j++){ ch[j]=ch[j+1]; }
 是在 n=n-1; 之前做的事情,n还是原来的n,把n+1的数全部处理完了。

 如果是希望输出I lve chipss,就把 n=n-1; 放在for(j=i;j<n;j++){ ch[j]=ch[j+1]; }前面

 还有,如果你输入的字符串字数刚好是200;ch[j+1]越界了;