/*************************************************************
FileName : test.c
FileFunc : 分析数据
Version : V0.1
Author : Sunrier
Date : 2011-06-10
Descp : 分析数据
*************************************************************/
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#define YEAR 100 //可算100年( 2000年到2099年 )
//#define FILENAME "a.txt"
typedef struct _Count{
int flag; //1:该年有记录 0:该年没记录
int data[5][10]; //[0到4列][0到9]
}sysCount;
sysCount Count[YEAR];
void init(){
int i = 0, j = 0, k = 0;
for(i=0; i<YEAR; i++){
Count[i].flag = 0;
for(j=0; j<5; j++){
for(k=0; k<10; k++)
Count[i].data[j][k] = 0;
}
}
}
int main()
{
int data[6];
char FILENAME[20];
FILE *fp = NULL;
char c;
printf("请输入文件名 : ");
scanf("%s",FILENAME);
if((fp = fopen(FILENAME, "r")) == NULL){
printf("不存在该文件!\n");
getch();
return 1;
}
init();
while(fscanf(fp, "%5d %1d %1d %1d %1d %1d\r\n", &data[0], &data[1], &data[2], &data[3], &data[4], &data[5]) != EOF){
int i = 0;
int year = data[0] / 1000 - 1; //0开始
for(i=0; i<5; i++){
Count[year].data[i][data[i+1]] ++;
}
Count[year].flag = 1;
//printf("%d, %d, %d, %d, %d, %d\r\n", data[0], data[1], data[2], data[3], data[4], data[5]);
}
{//输出结果
int y = 0, d = 0;
int year_counter = 0;
for(y=0; y<YEAR; y++)
{
if(Count[y].flag)
{
printf("\n20%02d年统计情况:\n", y+1);
printf("*******************************************\n");
printf(" | 第1列 | 第2列 | 第3列 | 第4列 | 第5列 \n");
printf("-------------------------------------------\n");
for(d=0; d<10; d++)
{
printf("%d | %2d | %2d | %2d | %2d | %2d\n", d, Count[y].data[0][d], Count[y].data[1][d], Count[y].data[2][d], Count[y].data[3][d], Count[y].data[4][d]);
}
year_counter ++;
}
}
printf("\n共统计了年数: %d\n", year_counter);
}
//保存记录?
fflush(stdin);
printf("\nSave the result in file? Y/N\n");
c = getchar();
if(c == 'Y' || c == 'y')
{
char SAVEFILE[20];
FILE *sfp = NULL;
printf("请输入保存数据的文件名: ");
scanf("%s", &SAVEFILE);
if((sfp = fopen(SAVEFILE, "a+")) != NULL)
{
int y = 0, d = 0;
int year_counter = 0;
for(y=0; y<YEAR; y++)
{
if(Count[y].flag)
{
fprintf(sfp, "\n20%02d年统计情况:\n", y+1);
fprintf(sfp, "*******************************************\n");
fprintf(sfp, " | 第1列 | 第2列 | 第3列 | 第4列 | 第5列 \n");
fprintf(sfp, "-------------------------------------------\n");
for(d=0; d<10; d++)
{
fprintf(sfp, "%d | %2d | %2d | %2d | %2d | %2d\n", d, Count[y].data[0][d], Count[y].data[1][d], Count[y].data[2][d], Count[y].data[3][d], Count[y].data[4][d]);
}
year_counter ++;
}
}
fprintf(sfp, "\n共统计了年数: %d", year_counter);
printf("Save file OK. Press anykey to exit.\n");
}
else
{
printf("Open file error. Press anykey to exit.\n");
}
fclose(sfp);
}
fclose(fp);
getch();
return 0;
}
/*
9356 7 8 4 3 3
9357 2 5 5 1 7
9358 8 2 3 4 0
10001 3 2 7 8 4
10002 9 8 1 9 5
10003 9 1 5 2 7
10004 2 3 2 6 0
*/