主题:数据顺序交换
在一个.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;
}
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;
}