通过命令行参数实现指定单词的统计,如果argc<2直接返回
#include<iostream>
#include<ctype.h>
#include<string>
#include<string.h>
using namespace std;
#define OUT 0
#define IN 1
int staute=OUT;
int count_word(char* filename,char* word)
{
FILE * fp=fopen(filename,"r");
char ch;
int count=0;
string passage="";
while((ch=fgetc(fp))!=EOF)
{
if(ch=='-') continue;
if(isalpha(ch))
{
if(staute==OUT) {
staute=IN;
}
passage+=ch;
}else{
if(staute==IN){
staute=OUT;
if(strcmp(passage.c_str(),word)==0) count++;
passage="";
}
}
}
if(staute==IN&&strcmp(passage.c_str(),word)==0) count++;
return count;
}
int main(int argc,char*argv[])
{
if(argc<2) return -1;
cout << count_word(argv[1],argv[2])<<endl;
return 0;
}
例:
![](https://img-blog.csdnimg.cn/img_convert/9cf68995d11054ca2191600169b8b658.png)
执行结果:
![](https://img-blog.csdnimg.cn/img_convert/45b8a7f5e5fb249dee18d1945c45de93.png)