不对,,正确如下:for(i=0;a[i]!='\0';i++){ if(a[i]==ch) { j=i; while(a[i]!='\0') { a[j]=a[++i]; j=i; } }}a[i]='\0';(以上代码可以覆盖你的for语句)你那个第一j没有赋值,,第二不是从你要删除的字符开始向前移动的,,第三要注意j++与++j的区别