C++ //*题目:编写一个程序,要求用户输入文件名和要查找的字符 //*串。程序在文件中查找指定的字符串,若

#include<iostream>usingnamespacestd;#include<fstream>#include<stdlib.h>#include<strin... #include<iostream>
using namespace std;
#include<fstream>
#include<stdlib.h>
#include<string.h>
int main()
{
char filename[81],searchstring[81],ch,q,s[81];
ifstream inputFile;
int count=0,i,length;
cout<<"请输入你想打开的文件名:";
cin>>filename;
cout<<"请输入你要查找的字符串:";
cin>>searchstring;
q=searchstring[0];
length=strlen(searchstring);
inputFile.open(filename);
if(!filename)
{
cout<<"文件打开失败!"<<endl;
exit(0);
}
while(1)
{
while(inputFile.get(ch))
{
if(ch==q)
break;
}
s[0]=ch;
for(i=1;i<length;i++)
{
inputFile.get(ch);
s[i]=ch;
}
s[i]='\0';
if(strcmp(searchstring,s)==0)
count+=1;
if(ch==EOF)
break;
}
cout<<"字符串在文件中出现的次数是:"<<count<<"次"<<endl;
return 0;
}

哪里错了哪里需要改进
/*题目:编写一个程序,要求用户输入文件名和要查找的字符
//*串。程序在文件中查找指定的字符串,若在某行中找到了该
//*串,那么就把该行在屏幕上显示出来。最后,给出字符串在
//*文件中出现的次数。
展开
 我来答
wxhysoft
2012-02-26 · TA获得超过371个赞
知道小有建树答主
回答量:248
采纳率:0%
帮助的人:314万
展开全部
主要是思路错了,你遇到第一个相同时,就进入读取同长的内容进行比较,这思路是错的,因为可能是读取的中间某个位置开始是相同的字串,你就无法识别到了,如输入“123”,文件是“1123”,你就跳过了,因此,for(i=1;i<length;i++)中每个都要比,不对,要重新从第2个位置重新比较。此外,还有其他些错误,如for(i=1;i<length;i++)中也要判读EOF
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式