用c语言编程,统计文件中出现的单词的次数

编写程序统计DATA5610.TXT文件中出现“if”、"while"、"for"单词的次数。用记事本自行建立一个DATA5610.TXT文件,存放在源程序相同的文件夹中... 编写程序统计DATA5610.TXT文件中出现“if”、"while"、"for"单词的次数。
用记事本自行建立一个DATA5610.TXT文件,存放在源程序相同的文件夹中,用来测试自己的程序。

分别输出“if”、“while”、“for”单词的次数,用空格分隔。

请问这个程序怎么写呢???怎样在c语言程序中引用一个文件,并在对其中的内容进行统计??
求教,希望大神能解答并给出详细的说明,谢谢!!!!
展开
 我来答
2998390042a
2014-12-14 · TA获得超过2171个赞
知道小有建树答主
回答量:1231
采纳率:0%
帮助的人:707万
展开全部
#include <iostream>
#include <fstream>
#include <string>
#include <vector>
using namespace std;
//定义存储单词和出现次数的结构体
typedef struct{
string word;
int num;
}count;
int main()
{
vector<count> v; //定义count类型的向量,动态存储count变量
count tempstr; //临时存储count变量
tempstr.num=0; //num初始化为0
ifstream in("english.txt"); //打开文件
string temp; //临时变量,存储文件的一行信息
string str; //临时变量,存储单个单词
int count=0; //记录单词字符个数
int j=0;

//按行读取文件,对每行信息截取单词并计数
while(getline(in,temp))
{
for(int i=0;i<temp.length ();i++)
{
if((temp[i]>='a'&&temp[i]<='z')||(temp[i]>='A'&&temp[i]<='Z'))
count++; //如果是英文字符,则计数加1
else if(count) //单词遇非英文字符时,计数终止,截取单词
{
str=temp.substr (i-count,count); //取子串(截取单词)
if(v.size ()) //若向量的长度不为0,则将单词与已有单词比较
{
for(j=0;j<v.size ();j++)
if(str.compare(v[j].word )==0)
{
v[j].num ++; //单词相同,则将相应单词的数目加1
count=0; //计数变量重新赋值为0,以便记录新的单词
break;
}
} //end if
if(j>=v.size ()) //单词第一次出现,将其添加至向量中
{
tempstr.word = str;
tempstr.num =1;
v.push_back (tempstr);
count = 0; //单词添加完毕,计数变量归0,记录新单词
} //end if
} //end elseif
} //end for
} //end while
//打印单词及出现次数
for(int i=0;i<v.size ();i++)
cout<<"the word is:"<<v[i].word<<", the times is:"<<v[i].num<<endl;
return 0;
}
furious_tauren
推荐于2017-10-12 · TA获得超过4056个赞
知道大有可为答主
回答量:1913
采纳率:100%
帮助的人:772万
展开全部
#include <stdio.h>
#include <string.h>

int main(void)
{
    int a = 0, b = 0, c = 0;
    char buf[128];
    FILE *fp;

    /* 打开文件,文件名必须大写 */
    fp= fopen("DATA5610.TXT", "r");
    if (!fp) {
        printf("No 'DATA5610.TXT' found.\n");
        return -1;
    }

    /* 逐次读取单词,空格或回车分割 */
    while (fscanf(fp, "%s", buf) > 0) {
        /* 如读取到的单词是 if,则a自增 1 */
        if (strcmp(buf, "if") == 0)
            a++;
        else if (strcmp(buf, "while") == 0)
            b++;
        else if (strcmp(buf, "for") == 0)
            c++;
    }

    printf("if: %d, while: %d, for: %d\n", a, b, c);
    fclose(fp);
    return 0;
}
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式