64,637
社区成员
发帖
与我相关
我的任务
分享
#include<iostream>
#include<string>
#include<fstream>
using namespace std;
void readfile(fstream &file,float (*a)[3],float (*b)[3],float (*c)[3],int (*d)[3]);
void output(float (*a)[3],int m,int n);
void output(int (*a)[3],int m,int n);
int main()
{
fstream file;
file.open("data.txt");
if (!file.is_open())
{
cout<<"error! No Such File!"<<endl;
exit(0);
}
float num_num[3][3];
float exe_exe[3][3],dig_dig[3][3];
int intnum_intnum[2][3];
readfile(file,num_num,exe_exe,dig_dig,intnum_intnum);
output(num_num,3,3);
output(exe_exe,3,3);
output(dig_dig,3,3);
output(intnum_intnum,2,3);
return 0;
}
void readfile(fstream &file,float (*a)[3],float (*b)[3],float (*c)[3],int (*d)[3])
{
string tmp;
int n,i,j;
while(!file.eof())
{
file >> tmp;
if (tmp == "num")
n = 1;
else if (tmp == "exe")
n = 2;
else if (tmp == "dig")
n = 3;
else if (tmp == "intnum")
n = 4;
else
n = 0;
switch(n)
{
case 1:
for (i=0;i<3;i++)
{
for (j=0;j<3;j++)
{
file >> a[i][j];
}
}
break;
case 2:
for (i=0;i<3;i++)
{
for (j=0;j<3;j++)
{
file >> b[i][j];
}
}
break;
case 3:
for (i=0;i<3;i++)
{
for (j=0;j<3;j++)
{
file >> c[i][j];
}
}
break;
case 4:
for (i=0;i<2;i++)
{
for (j=0;j<3;j++)
{
file >> d[i][j];
}
}
break;
default:
break;
}
}
}
void output(float (*a)[3],int m,int n)
{
for (int i=0;i<m;i++)
{
for (int j=0;j<n;j++)
{
cout<<a[i][j]<<" ";
}
cout<<endl;
}
cout<<endl<<endl;
}
void output(int (*a)[3],int m,int n)
{
for (int i=0;i<m;i++)
{
for (int j=0;j<n;j++)
{
cout<<a[i][j]<<" ";
}
cout<<endl;
}
cout<<endl<<endl;
}
float num_num[3][3];
FILE * in = fopen("data.txt","r");
for(int i=0;i<3;i++)
for(int j=0;j<3;j++)
fscanf(in,"%f",&num_num[i][j]) ;
//其余类似,另外,把data.txt里的那些num,exe,ding,intnum什么的去掉...
//fscanf和scanf用法完全一致,不过一个在stdin读入,一个在文件中读入....