c++编程:输入一个字符串,输入一个字符串里面的字符,在串中查找并删除

(1)若,没有找到,就输出提示信息“未找到此字符”
(2)若找到,则提示“找到此字符,要删除吗?”,等待用户输入回答。若回答‘Y’则将其删除后并输出串

#include "stdio.h"
#include "string.h"
void main()
{
char a[100],b[100],c[100],y,*p=b;int n1,n2,i,j;
scanf("%s",b);
n1=strlen(b);
printf("要查找的字符:\n",a);
scanf("%s",a);
n2=strlen(a);
for(i=0;i<n1,putchar(*p);i++)
{ for(j=0;j<n2;j++)
c[j]=b[i+j];
c[n2]='\0';
if(strcmp(c,a)==0)
{
p=&p[n2];
printf("\b");}
else
p++;

}
}//由于我能力有限,只做了一个有就删除的,不能提示,但主要功能还在。给你。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-04-11
#include<iostream>
#include<string>
using namespace std;
int main()
{
string str,str2,sgn;
size_t ps=0;
cin>>str>>str2;
if((ps=str.find(str2))==string::npos)
cout<<"not find it"<<endl;
else{
cout<<"do you want to erase it"<<endl;
cin>>sgn;
if(sgn=="y"||sgn=="Y")
str.erase(ps,str2.size());
}
cout<<str<<endl;
}
第2个回答  2012-04-10
吕姗33你好!
A//找出所有最短单词 #include <iostream> #include <vector> using namespace std; int main() { char str[256]; int min = 256; gets(str); int i,k=0,len=0; char c; vector<int>wordlen; vector<int>wordstart; for (i=0;i<strlen(str);i++) { c = str[i]; if(c >='a' && c<='z' || c >='A' && c<='Z' || c >='0' && c<='9')len++; else { if(len <= min && len != 0) { min = len; wordlen.push_back(len); wordstart.push_back(i - min); } len = 0; } } //处理最后一个单词 if(len <= min && len > 0) { min = len; wordlen.push_back(len); wordstart.push_back(i - min); } for(i = 0; i < wordlen.size(); i++) { if( wordlen[i] == min) { for( k = wordstart[i]; k<wordstart[i]+min; k++)cout<<str[k]; cout<<endl; } } return 1; }追问

可以有解释吗?

第3个回答  2019-03-09
没错,他是只能接收一个字符,但是因为你是在while里面循环,如果但他没有收到换行符时,他是会不断接收下一个字符的。
while
((c=getchar())!='\n'
)
//就是这个换行符
{
}

如果你想验证我的说你可以把上面的代码改成这样,当你输入3时他就不会收下个字符了。

while
((c=getchar())!=3
)
//就是这个换行符
{
}
相似回答