你的代码中 *(--s)=*(++s);这句有问题,这句执行顺序是先执行两边的自加和自减操作,最后再执行赋值,所以实际上是把自己的值赋给了自己,所以字符串毫无变化,改成*(s) = *(s+1);就好了,其他语句不用动。
#include
void delchar(char *str,char c)
{
char *s;
int i=0;
while (*str)
{
if (*str==c)
{
s=str;
do
{
*(s+i)=*(s+i+1);
i++;
}while(*(s+i));
break;
}
str++;
}
}
main()
{
char str[]="1234567890";
char ch = '3';
delchar(str,ch);
printf("%s\n",str);
}
124567890
Press any key to continue