源码实现 --> strdel
删除字符串中某个字符strdel
函数
char *strDel(char* str,const char chToDel)
不是库里面的函数,自己实现的原型,删除str中所有的chToDel字符。
源码
//基本思想是:通过pRefStr2遍历str,找出不等于chToDel的值,将其赋值与pRefStr2 char *strDel(char* str,char chToDel) { assert((str!=NULL)&& (chToDel!=NULL)); char *pRefStr1, *pRefStr2; pRefStr1=pRefStr2=str;//将两个指针变量同时指向str,后续改变指针变量的值相当于改变str的值 while(*pRefStr2++){ if(*pRefStr2!=chToDel) { *pRefStr1++=*pRefStr2;//找到不等于chToDel的值,并将其赋值与pRefStr1,再将pRefStr1的指针向后移动; } } *pRefStr1='\0'; return str; }
关键点: 注意C语言程序的顺序执行,以及指针。
测试
#include<iostream.h> #include<assert.h> void main() { char destStr[10]="aadddfcca"; char delStr='a'; strDel(destStr,delStr); cout<<destStr<<endl; }
输出结果:
dddfcc