字符串处理。注意一下什么时候输出error什么时候对原字符串不进行修改
#include<iostream>
using namespace std;
const int MAX = 40;
void Delete(char s[],char a);
void Insert(char s[],char a,char b);
void Replace(char s[],char a,char b);
int main()
{
int data;
char s[MAX],cmd,a,b;
cin>>data;
while(data-- > 0)
{
cin.getline(s,MAX);
cin.getline(s,MAX);
cin>>cmd>>a;
switch(cmd)
{
case 'R':
cin>>b;
Replace(s,a,b);
break;
case 'D':
Delete(s,a);
break;
case 'I':
cin>>b;
Insert(s,a,b);
break;
}
}
return 0;
}
void Delete(char s[],char a)
{
int Pos,nPos;
for(Pos=0;s[Pos]!='\0';Pos++);
for(nPos=0;s[nPos]!=a && nPos<Pos;nPos++);
if(Pos==nPos) cout<<"error"<<endl;
else
{
for(;nPos<Pos;nPos++) s[nPos]=s[nPos+1];
s[nPos]='\0';
cout<<s<<endl;
}
}
void Insert(char s[],char a,char b)
{
int aPos,Pos;
for(aPos=-1,Pos=0;s[Pos]!='\0';Pos++)
if(s[Pos]==a) aPos=Pos;
if(-1==aPos) cout<<"error"<<endl;
else
{
for(s[Pos+1]='\0';Pos>aPos;Pos--)
s[Pos]=s[Pos-1];
s[aPos]=b;
cout<<s<<endl;
}
}
void Replace(char s[],char a,char b)
{
int Pos;
for(Pos=0;s[Pos]!='\0';Pos++)
if(s[Pos]==a) s[Pos]=b;
cout<<s<<endl;
}
using namespace std;
const int MAX = 40;
void Delete(char s[],char a);
void Insert(char s[],char a,char b);
void Replace(char s[],char a,char b);
int main()
{
int data;
char s[MAX],cmd,a,b;
cin>>data;
while(data-- > 0)
{
cin.getline(s,MAX);
cin.getline(s,MAX);
cin>>cmd>>a;
switch(cmd)
{
case 'R':
cin>>b;
Replace(s,a,b);
break;
case 'D':
Delete(s,a);
break;
case 'I':
cin>>b;
Insert(s,a,b);
break;
}
}
return 0;
}
void Delete(char s[],char a)
{
int Pos,nPos;
for(Pos=0;s[Pos]!='\0';Pos++);
for(nPos=0;s[nPos]!=a && nPos<Pos;nPos++);
if(Pos==nPos) cout<<"error"<<endl;
else
{
for(;nPos<Pos;nPos++) s[nPos]=s[nPos+1];
s[nPos]='\0';
cout<<s<<endl;
}
}
void Insert(char s[],char a,char b)
{
int aPos,Pos;
for(aPos=-1,Pos=0;s[Pos]!='\0';Pos++)
if(s[Pos]==a) aPos=Pos;
if(-1==aPos) cout<<"error"<<endl;
else
{
for(s[Pos+1]='\0';Pos>aPos;Pos--)
s[Pos]=s[Pos-1];
s[aPos]=b;
cout<<s<<endl;
}
}
void Replace(char s[],char a,char b)
{
int Pos;
for(Pos=0;s[Pos]!='\0';Pos++)
if(s[Pos]==a) s[Pos]=b;
cout<<s<<endl;
}