您的位置:首页 > 其它

将文件input.bin中的数据按字节(无符号数值)统计,输出每个数值在文件中出现的次数

2014-06-23 21:02 435 查看


求:将文件input.bin中的数据按字节(无符号数值)统计,输出每个数值在文件中出现的次数

用了两种方法解答这个问题:
一种是读一个就统计一个,采用C语言编写;

#include <stdlib.h>
#include <stdio.h>

int main()
{
FILE* f;
char c[1]={0};
int i=0;
int num[10]={0,0,0,0,0,0,0,0,0,0};

f=fopen("input.bin","r");//打开文件
if(f!=NULL)//判断打开文件是否成功
{	while(!feof(f))//判断是否读到文件的末尾
{
fread(c,sizeof(char),1,f);//从文件中读取一个字节
num[atoi(c)]++;//将读取到的字节转换成整数,并且将其个数加1

}
for(i=0;i<10;i++)//统计结果输出
printf("%d的个数为%d\n",i,num[i]);
fclose(f);//关闭打开的文件
}
return 0;
}


另一种是全部读到容器里然后再分别统计,采用C++语言编写。

#include <iostream>
#include <fstream>
#include <vector>
#include <string>
#include <algorithm>
using namespace std;

int main()
{
vector< char> cf;
ifstream in("input.bin");
if (in.is_open())
{
string str_output;
vector <char>::iterator theIterator;
while(getline(in,str_output))
{
theIterator = cf.end();
cf.insert(theIterator,str_output.begin(),str_output.end());
}
for (int i=0;i<10;i++)
{
cout<<i<<"的个数为"<<count(cf.begin(),cf.end(),char('0'+i))<<endl;
}
in.close();
}
return 0;
}


注:测试的时候input.bin文件可以自己创建一个txt文本文件替换掉
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐