在一个.txt中有如下数据:
bo
o
1 2 3 4 5 6 0.0010000
bo
o
1 1 1 2 3 3 0.0010000
bf
o
1 2 3 4 5 5 0.0010000
bo
o
12 234 345 67 90 45 0.0010000
bo
0
50 1 34 56 789 3 1.0000000
bo
0
2 345 56 34 23 89 0.001000
将含bf 的数据
bf
o
1 2 3 4 5 5 0.0010000
放在前三行
我编的程序如下.不过调不通,请大虾指教.
#include<stdio.h>
#include<conio.h>
#include<process.h>
FILE *fp;
int buf[100][7];//定义缓冲区,存储从文件读出的数据
int data[100][7];//输入到一个新文件
void display(int n,int x[][7])//显示函数
{
    int i,j;
    for(i=0;i<n;i++) 
        for(j=0;j<7;j++) 
        { 
            printf("%d ",x[i][j]); 
            if(j==1) printf("\n"); 
        } 
}
void read_file()//从文件中格式化读入数据子函数
{    
    int i;

    if((fp=fopen("d:\\shuju.txt","r"))==NULL)//打开文件
    {
        printf("\nCannot open this file.press any key to exit!\n");
        getch();
        exit(1);
    }
    while(!feof(fp)) //从文件中格式化读入数据
    { 
        for(i=0;i<18;i++) 
        fscanf(fp,"%d%d", &buf[i][0],&buf[i][1],&buf[i][2],&buf[i][3],&buf[i][4],&buf[i][5],&buf[i][6]); 
    } 
    printf("\n\nthe data.txt has been succeeded to read ,the data is:\n");
    
    if(fclose(fp)!=0)//关闭文件
    {
        printf("\n the file cannot be closed!press any key to exit\n");
        getch();
        exit(1);
    }

}

void write_file()//向文件中格式化写入数据子函数
{
    int i,j;
    if((fp=fopen("d:\\data1.txt","w+"))==NULL)//打开文件
    {
        printf("\nCannot open this file.press any key to exit!\n");
        getch();
        exit(1);
    }
    for(i=0;i<18;i++)//格式化输出到文件
    {
        for(j=0;j<7;j++)
        {
            fprintf(fp,"%8d%7d\n",data[i][0],data[i][1],buf[i][2],buf[i][3],buf[i][4],buf[i][5],buf[i][6]);
            if(j==1) fprintf(fp,"\n");
        }            
    }
    if(fclose(fp)!=0)//关闭文件
    {
        printf("\n the file cannot be closed!press any key to exit\n");
        getch();
        exit(1);
    }
}

int main(void)
{    
    
    int i,j=0;
    void read_file();
    display(10,buf);//显示子函数,将从文件中调入的数据显示出来
    
    for(i=0;i<18;i++)
    {
        if(buf[i][0]=bf)//查找bf
        {
            data[1][0]=buf[i][0];
            data[2][0]=buf[i+1][0];
            data[3][j]=buf[i+2][j];
            j++;
        }            
    }
       if(buf[3i][7]=0.001000)
       {data[3i][7]=0}
  
    display(j,data);

    write_file();//将新数据写入文件

    return 0;
}