删除字符串中特定字符

为什么字符串和字符都从键盘输入会导致无法正常进行,如果给定其中某一个会正常进行

是不是程序某个地方逻辑需要改进。正常删除,应该是没有什么问题的。下面是一个简单的实现,供参考。

代码如下:



#include <stdio.h>
#include <string.h>

int main(void){
    
    char str[100];  // 存放输入的字符串的字符数组 
    char temp[100];  //备用字符数组 
    char ch;   // 存放要删除的字符的字符变量 
    
    printf("请输入一个字符串:");
    gets(str);  // 把输入的字符串存入字符数组str中 
    
//    while(getchar()!='\n'){
//        continue; 
//    }
    printf("请输入要删除的字符:");
    scanf("%c",&ch);  // 从输入获取一个字符存放到字符变量ch中 
    
    int i=0,j=0;
    strcpy(temp,str);  // 把输入的字符串复制到字符数组temp中
    
    while(str[i]!='\0'){ // 遍历整个输入的字符串,如果遇到指定字符则跳过,其他字符复制到备份数组temp中 
        
        if(ch==str[i]){  // 遇到指定字符,跳过 
            i++;
            continue;
        }else{  // 其他字符正常复制 
            temp[j]=str[i];
            i++;
            j++;
        }        
    }
    temp[j]='\0';  // 循环结束,在输入的最后一个字符后添加一个空字符'\0',以便形成一个字符串 
    
    strcpy(str,temp);  // 把删除指定字符的字符串复制到 字符数组str中
    //   打印结果 
    printf("删除指定字符后的字符串为:%s\n",str);
    
    return 0;
} 

img

  • 帮你找了个相似的问题, 你可以看下: https://ask.csdn.net/questions/323681
  • 你也可以参考下这篇文章:关于定时器的使用及页面切换时定时器无法清除的问题解决办法
  • 除此之外, 这篇博客: 递归实现指数函数中的 函数最终是返回当前函数体的值,返回完之后会继续执行下面的语句,直到执行本次函数之后才会返回上层函数 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • #include <stdio.h>
    
    double calc_pow(double x, int n);
    
    int main()
    {
        double x;
        int n;
    
        scanf("%lf %d", &x, &n);
        printf("%.0f\n", calc_pow(x, n));
    
        return 0;
    }
    int i=1;
    double calc_pow(double x, int n)
    {
        printf("%f %d\n", x, n);
        //if(n==1) return x; //如果用这个判断的话,会少一个,如果n是0就不可以了
         if (n == 0)
             return 1;
        if (n % 2 == 0)
        {
            //printf("%f %d\n", x, n);
            return calc_pow(x * x, n / 2);
        }
        else
        {
            //printf("%f %d\n", x, n);
            return calc_pow(x * x, n / 2) * x; //记住函数最终是返回当前函数的值,返回完之后会继续执行下面的语句,直到执行本次函数之后才会返回上层函数
        }
    }
    
  • 您还可以看一下 2017CCTC大会老师的【微服务专场】实施微服务架构的关键技术课程中的 实施微服务架构的关键技术小节, 巩固相关知识点

img