#include "stdafx.h"
#include <stdio.h>
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
const char * str1="offset_lr < offset: ";
const char * str2="offset_lr > offset: ";
#define BUFFERSIZE 128
char StrBuffer[BUFFERSIZE];
#define SIZE 49
int SMALL_COUNT[SIZE];
int LARGE_COUNT[SIZE];
double average=0.0;
double SMALL_SUM=0;
double LARGE_SUM=0;
int totalCount=0;
int strSize=20;
int findAndCount(const char * searchStr,int arr[SIZE] ,bool Large)
{
char * str;
char ch;
int tmp=0;
FILE * f=fopen("test.txt","rb");
if(f==NULL)
{
return (-1);
}
else
{
while(fread(StrBuffer,1,BUFFERSIZE,f)==BUFFERSIZE)
{
str=StrBuffer;
if ((str=strstr(str,searchStr))!=NULL)
{
bool exitFlag=false;
for(int i=2;i<8;i++)
{
ch=*(str+strSize+i);
printf("%c",ch);
if(ch=='/0')
{
exitFlag=true;
break;
}
}
if(exitFlag)
continue;
ch=*(str+strSize+8);
if(ch=='/0')
continue;
printf("%c",ch);
if(ch<='9')
tmp=(ch-'0')*16;
else
tmp=(ch-'A'+10)*16;
ch=*(str+strSize+9);
if(ch=='/0')
continue;
printf("%c",ch);
if(ch<='9')
tmp+=(ch-'0');
else
tmp+=(ch-'A'+10);
if(tmp<SIZE)
{ arr[tmp]++;
printf("/n%d",arr[tmp]);
}
printf("/n");
}
}
for(int i=0;i<SIZE;i++)
{
totalCount+=arr[i];
if(Large)
LARGE_SUM+=(arr[i]*i);
else
SMALL_SUM+=(-arr[i])*i;
printf("%d:%d/n",i,arr[i]);
}
fclose(f);
}
}
int _tmain(int argc, _TCHAR* argv[])
{
for(int i=0;i<SIZE;i++)
{
SMALL_COUNT[i]=0;
LARGE_COUNT[i]=0;
}
printf("%d/n",strSize);
findAndCount(str2,LARGE_COUNT,true);
printf("LARGE_SUM:%lf,SMALL_SUM:%lf/n",LARGE_SUM,SMALL_SUM);
system("pause");
findAndCount(str1,SMALL_COUNT,false);
printf("LARGE_SUM:%lf,SMALL_SUM:%lf/n",LARGE_SUM,SMALL_SUM);
average=(LARGE_SUM+SMALL_SUM)/totalCount;
printf("Total Count:%d/nAverage:%lf/n",totalCount,average);
system("pause");
return 0;
}