//把文件按照行分割成多个文件
#define Row_Max_Length 80
#define Fnm_Max_Length 12
#include<stdio.h>
#include<string.h>
void main()
{
FILE *fp=fopen("file.dat","r");//打开待分解文件
FILE *ofp,*ufp;
char ch='0';
char *head="HEAD D763A D763A CAWV96";
char ofilename[Fnm_Max_Length]={' '};
char ufilename[Fnm_Max_Length];={' '};
while (ch!=EOF)
{
int i=0;
char middt[Row_Max_Length]={' '};
ch=fgetc(fp);//读取单个字符
while (ch!='/n'&&ch!=EOF)//读取一行字符串
{
middt[i++]=ch;
ch=fgetc(fp);
}
if(strncmp(middt,"BEGIN",5)==0)//以BEGIN开头的行
{
int i=0;
do
{
ofilename[i]=middt[i+7];
ufilename[i]=middt[i+7];
i++;
}while (middt[i+7]!=' ');
strcpy(ofilename+i,"O.FLD");
strcpy(ufilename+i,"U.FLD");
middt[6]=' ';
ofp=fopen(ofilename,"w");
fputs(head,ofp);
fputc('/n',ofp);
middt[i+7]='O';
for(int j=0;j<71;j++)
fputc(middt[j],ofp);
ufp=fopen(ufilename,"w");//分割成的小文件
fputs(head,ufp);
fputc('/n',ufp);
middt[i+7]='U';
for(j=0;j<71;j++)
fputc(middt[j],ufp);
//printf("%s",ofilename);
//printf("%s",ufilename);
}
else if (strncmp(middt,"SEARC",5)==0)//以SEARC开头的行
{
middt[0]='P';
middt[1]='O';
middt[2]='I';
middt[3]='N';
middt[4]='T';
fputc('/n',ofp);fputc('/n',ufp);
fputs(middt,ofp);fputs(middt,ufp);
ch=fgetc(fp);int i=0;
while (ch!='/n'&&ch!=EOF)
{
middt[i++]=ch;
ch=fgetc(fp);
}
strcpy(middt+36," 0.00 0.00 0.00");
fputc('/n',ofp);fputc('/n',ufp);
fputs(middt,ofp);fputs(middt,ufp);
}
else if (strncmp(middt,"END",3)==0)//以END开头的行
{
printf("7");
fclose(ofp);
fclose(ufp);
}
else
continue;
}
}