# define Row_Max_Length 80
# define Fnm_Max_Length 12
#include<stdio.h>
#include<string.h>
void main()
{
FILE *fp,*ofp,*ufp;
if((fp=fopen("file.dat","r"))==NULL)
{
printf("Cannot open file!/n");
return;
}
char ch='0';
char buf[Row_Max_Length]={' '};
char *head="HEAD D763A D763A CA*-WV96 ";
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);
}
2BEGIN
if(strncmp(middt,"BEGIN",5)==0)
{
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);/ 1HEAD
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);
}
3POINT
if(strncmp(middt,"SEARC",5)==0)
{
strncpy(middt,"POINT",5);
fputc('/n',ofp);
fputs(middt,ofp);
fputc('/n',ufp);
fputs(middt,ufp);
ch=fgetc(fp);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);
fputs(middt,ofp);
fputc('/n',ufp);
fputs(middt,ufp);
fputc('/n',ofp);
fputs("OUTLN",ofp);
fputc('/n',ufp);
fputs("OUTLN",ufp);
}
// 4KLINE
else if (strncmp(middt,"KLINE",5)==0)
{
strncpy(middt,"LINE ",5);
middt[9]=' ';
strncpy(middt+30,middt+40,10);
strncpy(middt+40,middt+50,10);
middt[51]='/0';
fputc('/n',ofp);
fputs(middt,ofp);
}
/// 5KCIRC
else if (strncmp(middt,"KCIRC",5)==0)
{
strncpy(middt,"CIRC",4);
for(i=10;i<30;i++) buf[i] = middt[i] ;
for(i=40;i<60;i++) buf[i-10] = middt[i] ;
for(i=10;i<30;i++) buf[i+40] = middt[i] ;
for(i=43;i<45;i++) buf[i+27] = middt[i] ;
fputc('/n',ofp);
fputs(buf,ofp);
}
/ 6 GLINE
else if (strncmp(middt,"GLINE",5)==0)
{
middt[8]=' ';middt[9]=' ';middt[79]=' ';middt[80]=' ';
fputc('/n',ofp);
fputs(buf,ofp);
for(i=0;i<7;i++)
{
ch=fgetc(fp);i=0;
while (ch!='/n'&&ch!=EOF)
{
middt[i++]=ch;
ch=fgetc(fp);
}
fputc('/n',ofp);
fputs(middt,ofp);
}
}
// 7 SLINE
else if (strncmp(middt,"SLINE",5)==0)
{
middt[8]=' ';middt[9]=' ';
fputc('/n',ofp);
fputs(buf,ofp);
for(i=0;i<3;i++)
{
ch=fgetc(fp);i=0;
while (ch!='/n'&&ch!=EOF)
{
middt[i++]=ch;
ch=fgetc(fp);
}
fputc('/n',ofp);
fputs(middt,ofp);
}
}
/ 8VLINE
else if (strncmp(middt,"VLINE",5)==0)
{
middt[54]=' ';
fputc('/n',ofp);
fputs(buf,ofp);
ch=fgetc(fp);i=0;
while (ch!='/n'&&ch!=EOF)
{
middt[i++]=ch;
ch=fgetc(fp);
}
fputc('/n',ofp);
fputs(middt,ofp);
ch=fgetc(fp);i=0;
while (ch!='/n'&&ch!=EOF)
{
middt[i++]=ch;
ch=fgetc(fp);
}
fputc('/n',ofp);
fputs(middt,ofp);
}
/
else if (strncmp(middt,"END",3)==0)
{
fputs("/nEND/n*END",ofp);
fputs("/nEND/n*END",ufp);
fclose(ofp);
fclose(ufp);
printf("END/n");
}
/ 出力しない
else
continue;
}
}