C语言编写函数字符串删除对应的字符(两种方法)
思路
用两个指针,一个用来遍历字符串进行比较,一个用来当下标赋值
代码实现
方法一
void del(char *str,char c) //str指针指向str数组
{ //c是要删除的字符
char *p=str; //指针p=str,指向str数组
while(*str) //循环,当str到'\0'结束
{
if(*str!=c) //如果*str不是要删除的字符
*p++=*str; //就把*str赋值给*p,p指向下一个,
str++; //如果是要删除的字符,则不赋值
}
*p='\0'; //*str到\0说明字符串已经删完了,要最后加一个‘\0‘,
int main()
{
char str[80],c;
gets(str); //输入字符串
c=getchar(); //输入删除字符
del(str,c); //调用删除函数
printf("%s",str); //输出删除后的字符串
return 0;
}
方法一运行结果
方法二
思路:
- 遍历判断是否一样,如果和删除的字符不一样,则存到另一个字符数组
- 可以使用strcmp函数改变原数组的值
代码实现
int main()
{
char a[80],b[80],c;
int i,j;
gets(a);
c=getchar();
for(i=0,j=0;i<strlen(a);i++)
if(a[i]!=c){
b[j]=a[i];
j++;
}
b[j]='\0';
strcpy(a,b);
puts(a);
}