C语言编写函数字符串删除对应的字符(两种方法)
思路
用两个指针,一个用来遍历字符串进行比较,一个用来当下标赋值
代码实现
方法一
voiddel(char*str,charc) //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‘,intmain() { charstr[80],c; gets(str); //输入字符串c=getchar(); //输入删除字符del(str,c); //调用删除函数printf("%s",str); //输出删除后的字符串return0; }
方法一运行结果
方法二
思路:
- 遍历判断是否一样,如果和删除的字符不一样,则存到另一个字符数组
- 可以使用strcmp函数改变原数组的值
intmain() { chara[80],b[80],c; inti,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); }
方法二运行结果