一个简单的实现:
#include <stdio.h>
int main(void){
char* cut(char x[] ,int y,char z);
char a[40],b, * c;
int d = 40;
gets(a);
printf("a=%s\n",a);
b = getchar();
printf("b=%c\n",b);
c = cut(a,d,b);
printf("after delete '%c', str=%s\n",b,c);
return 0;
}
char * cut(char x[] ,int y, char z){
int i ;
char temp [y];
int j = 0;
for(i=0;i<y;i++){
temp[i] = '\0';
}
for(i=0;x[i]!='\0';i++){
// printf("x[%d]=%c,z=%c\n",i,x[i],z);
if(x[i]!=z){
temp[j] = x[i];
// printf("temp[%d]=%c\n",j,temp[j]);
j++;
}
}
temp[j] = '\0';
printf("temp=%s\n",temp);
for(i=0;temp[i]!='\0';i++){
// printf("exchange , temp[%d]=%c\n",i,temp[i]);
if(i==y-1&&temp[i]=='\0')
x[i] = '\0';
else
x[i] = temp[i];
}
if(i<y){
x[i] = '\0';
}
// printf("afeter exchange x=%s\n",x);
return x;
}
1、gets函数那里需要使用字符指针,读入字符需要使用getchar。
2、puts函数也是需要使用字符指针做参数,所以c的类型要改为字符指针char *,
连带 cut函数的返回类型也要改位char * 字符指针类型,也可以在传入字符指针x
里存放修改后的字符串, 从而cut函数改为void返回类型
3、cut函数第26行 比较字符不同的那里,有语法和逻辑错误,不能使用空的''这个字符,
相同的字符替换,可以用另一个缓存字符数组只读入不同字符