题目如下
用数组下标的解法能将就出结果,但是经不起刁钻测试用例考验
void delchar( char *str, char c ){
int n=0;
char *p=str;
while(*p!='\0'){ //统计长度
n++;
p++;
}
for(int i=0;i<n;i++){ //从第一项起检查
if(str[i]==c){ //如果指向元素等于c 执行for循环移位进行删除
for(int j=i;j<n;j++){
str[j]=str[j+1];
}
}
}
}
运行结果如下
下面是用指针,算法没变只是用了指针 连运行都运行不了。。
```c
void delchar( char *str, char c ){
int n=0;
char *p=str;
while(*p!='\0'){ //统计长度
n++;
p++;
}
while(*str!='0'){
if(*str==c){
char *p=str;
for(;p!='\0';p++){
*p=*(p+1);
}
}
str++;
}
}
被删除字符之后的所有字符向前移动一个位置后,你忘了将最后一个字符设置为0,否则最后一个字符还是留在了字符串中
for(int i=0;i<n;i++){ //从第一项起检查
if(str[i]==c){ //如果指向元素等于c 执行for循环移位进行删除
for(int j=i;j<n;j++){
str[j]=str[j+1];
}
str[n-1] = 0;
n--;
}
}
希望能顺带说下为啥不能通过所有测试用例