文件操作

# 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;
 }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

码猿杂谈

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值