编写一个函数,实现从字符串str中删除所有的指定字符ch,从主函数中输入一个字符串str和一个字符ch

1. 编写一个函数,实现从字符串str中删除所有的指定字符ch,从主函数中输入一个字符串str和一个字符ch,并在主函数中调用该函数,输出删除后的字符串str。(20 分,基本分15分)

void delchar(char*str,char ch)
{
      char *p=str;
      while( *str )
      {
           if ( *str != ch )
              *p++=*str ;
           str++ ;
      }
      *p='\0' ;
}

算法描述:

    定义两字符指针,一个作为读取指针,另一个作为写入指针,写指针指向字符串的头部。

    将写指针向后移定位到第一个要替换字符或结束符,

    如果是结束符, 返回;

    否则,读指针 = 写指针加1。

    如果读指针指向的字符不是要替换字符或结束符, 将读指针内容 赋给写指针; 两指针后移;

    否则  如果 读指针指向的是要替换字符, 读指针后移;

    否则 将读指针内容 赋给写指针, 返回。

    重复3。

温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2017-12-16
#include "stdafx.h"
#include <iostream>
#include "string.h"
using namespace std;
char* Serch(char *str,char ch)
{
int i=strlen(str);
char *str1 = new char [i+1];
int k=0,j=0;
while(str[k])
{
if(str[k]!=ch)
{
str1[j]=str[k];
j++;
}
k++;
}
str1[j]='\0';
return str1;
}
int main()
{
char str[128]={};
cout<<"请输入str字符串"<<endl;
cin>>str;
char ch;
cout<<"请输入ch字符串";
cin>>ch;
cout<<"输出结果为"<<endl;
cout<<Serch(str,ch)<<endl;
return 0;
}

方法比较笨 就是一个字符一个字符比较 相同的舍弃,将不同的存放在一个新数组中 忘采纳本回答被提问者采纳
相似回答