删除字符
本题要求实现一个删除字符串中的指定字符的简单函数。
函数接口定义:
void delchar( char *str, char c );
其中char *str是传入的字符串,c是待删除的字符。函数delchar的功能是将字符串str中出现的所有c字符删除。
思路1:数组方法,当找到要删除的字符时,将该字符后面的所有字符往前移动,注意需要判断是否两个连续要删除的字符。
void delchar( char *str, char c )
{
int i = 0; //用于遍历
while(str[i] != '\0'){
if(str[i] == c){
for(int j = i; str[j] != '\0'; j++){
str[j] = str[j + 1]; //将下一字符往前移
}
i--; //往前移后,需要再次判断该位置是否要删除
}
i++;
}
}
思路2:指针方法,不删除的字符保留,最后赋值\0
void delchar( char *str, char c )
{
char *s;
s = str; //指向str
while(*str != '\0'){
if(*str != c){ //不是删除的字符
*s = *str; //改变*s的值,保存非删除的字符
s++;
}
str++;
}
*s = *str; //将'\0'赋值给*s
//开头s = str,指向了str,所以更改*s的值,就是更改*str。
}