C语言文本文件解析

//把文件按照行分割成多个文件

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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

码猿杂谈

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

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

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

打赏作者

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

抵扣说明:

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

余额充值