为什么我这个程序函数用循环得不到结果,还要单独再判断执行一次才得到正确结果啊?
题目要求:删除字符串s中的所有等于c的字符 “abcd”删除b ->"acd"
#include <stdio.h>
#include <string.h>
//函数squeeze()作用是去掉字符串中和字符c相同的字符,返回值为去掉后的字符串
void squeeze(char *s, char c)
{
int num;
char *p=s;
num=strlen(s); //字符串的长度决定循环的次数
for(;num>0;num--)
{
while(*s++)
{
if(c==*s) //如果遇到等于该字符的把该位置变为'\0'后结束while循环
{
*s='\0';
break;
}
}
s=strcat(p,s); //连接字符串,即如果有找到字符C则去掉刚才变的那个'\0'
}
/*if (*s==c)
s=strcpy(s,s+1);*/ //如果去掉注释,能得到正确的结果,不去掉注释结果总是不能去掉第一个和字符C相同的字符
}
int main()
{
char str[20];
char ch;
printf("please put a string :\n");
gets(str);
printf("put a char number what you want to delate:\n");
ch =getchar();
squeeze(str,ch);
puts(str);
}