这个哪里错了,不太明白字符串如何输入到函数里

img

一个简单的实现:

#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行 比较字符不同的那里,有语法和逻辑错误,不能使用空的''这个字符,
        相同的字符替换,可以用另一个缓存字符数组只读入不同字符