- 注册时间
- 2005-10-22
- 最后登录
- 1970-1-1
|
#define BUTE 100 //缓冲区
char SAVEADDR[]="/LavaData/ljwfmsg.dat";
char FileDir[61];
char fname[61];
char tmpdir[61];
char data_test[10]={
13,10,13,10,97,13,10,98,13,10
};
char SelectFile();
long line,sline;
char bute[BUTE];
struct FMSG
{
char filehead[7];
long line_count;
long sline_count;
}fmsg;
int init_data()
{
char fp;
SetScreen(1);
fp=fopen(SAVEADDR,"r");
if(!fp)
{
printf("Welcome ues the pro!\n");
printf("For the first run..\n");
memcpy(fmsg.filehead,"ljwfmsg",7);
fmsg.line_count=0;
fmsg.sline_count=0;
fp=fopen(SAVEADDR,"w");
if(!fp){printf("New data err!\n");getchar();exit(1);}
rewind(fp);
fwrite(fmsg,1,sizeof(struct FMSG),fp);
fclose(fp);
printf("Init Data OK!!\n");
getchar();SetScreen(1);return (2);
}//if not have .dat
line=0;
sline=0;
}
void check(int a,int b)
{
int i;
if(b<a)
{
printf("check 入参 err!\n");
getchar();
exit(1);
}
for(i=a;i<=b;i=i+2)
{
if((bute==13) && (bute[i+1]==10)) line++;
if((bute[i+1]==13) && (bute[i+2]==10)) line++;
if((bute==10) && (bute[i+1]==13)) sline++;
if((bute[i+1]==10) && (bute[i+2]==13)) sline++;
}//for
}//check()
void pro_test()
{
int i;
SetScreen(1);
printf("测试程序完整性\n");
memcpy(bute,data_test,10);
line=0;sline=0;
// for(i=0;i<=9;i++)
// printf("%d,",bute);
check(0,9);
// printf("line=%d sline=%d",line,sline);
if(line!=4 || sline!=1)
{
printf("\ncheck err!!\n");
getchar();
exit(0);
}
printf("测试完毕!!\n");
//getchar();
SetScreen(1);
line=0;
sline=0;
}
void main()
{
int key;
int fp;
int err,i;
pro_test();
err=init_data();
SelectFile();
SetScreen(1);
printf("filedir:%s\n",FileDir);
key=getchar();
if('y'!=key) exit(0);
if(!(fp=fopen(FileDir,"r")))
{
printf("file open err! fp=%d",fp);
getchar();
exit(-1);
}
//...................
printf("Running....\n");
rewind(fp);
fread(bute,1,BUTE,fp);
while(1)
{
check(0,BUTE-1);
bute[0]=bute[BUTE-1];
err=fread(&bute[1],1,BUTE-1,fp);
if(!err) break;
} //while
//剩余部分
for(i=BUTE-2;i>0;i--)
if(fread(&bute[1],1,i,fp)) break;
check(0,i+1);
printf("The last:check(%d,%d)\n",0,i+1);
//...................
fclose(fp);
printf("Line:%d\nsLine:%d",line,sline);
while(27!=getchar())continue;
}
char SelectFile()
{
int tmp;
ChDir("/");
strcpy(tmpdir,"/");
tmp=0;
for(;;)
{
if(!FileList(fname) || !strcmp(fname,".."))
{tmp--;
if (tmp<0)return 0;
tmpdir[strlen(tmpdir)-1]=0;
for(;tmpdir[strlen(tmpdir)-1]!='/';)
tmpdir[strlen(tmpdir)-1]=0;
ChDir("..");
continue ;
}
if(ChDir(fname))
{
tmp++;
strcat(tmpdir,fname);
strcat(tmpdir,"/");
continue ;
}else tmp--;
strcpy(FileDir,tmpdir);
strcat(FileDir,fname);
return 1;
}
}
//不知道为什么统计不准
//而且算法垃圾,速度太慢 |
|