关于字符串的删除
#include<iostream>
#include<cstring>
using namespace std;
int main()
{
char str[20];
int i,j,n;
cout<<"输入一组字符串:";
cin>>str;
cout<<"输入要删除的字母n:";
cin>>n;
j=strlen(str);
for(i=0;i<j;i++)
{
if(str[i]=='n')
for(i=i;i<j;i++)
str[i]=str[i+1];
}
str[i]='\0';
cout<<str<<endl;
return 0;
}
觉得我的思路没错啊。。。。。为什么就是实现并不了涅????????输出的还是原来的字符串。。。。。。
[解决办法]
小改动。
- C/C++ code
#include<iostream>#include<cstring>using namespace std;int main(){ char str[20]; int i,j; char n; cout<<"输入一组字符串:"; cin>>str; cout<<"输入要删除的字母n:"; cin>>n; j=strlen(str); for(i=0; i<j; i++) { if(str[i]==n) for(i=i; i<j; i++) str[i]=str[i+1]; } //str[i]='\0'; 此行没必要,因为在输入字符串时尾部已经有了。 cout<<str<<endl; return 0;}
[解决办法]
如果把所有的指定字符删除还得这样改:
- C/C++ code
#include<iostream>#include<cstring>using namespace std;int main(){ char str[20]; int i,j,k; char n; cout<<"输入一组字符串:"; cin>>str; cout<<"输入要删除的字母n:"; cin>>n; j=strlen(str); for(i=0; i<j; ) { if(str[i]==n){ for(k=i; k<j; k++) str[k]=str[k+1]; continue; } i++; } //str[i]='\0'; 此行没必要,因为在输入字符串时尾部已经有了。 cout<<str<<endl; return 0;}