VC++中从txt文本中读取数据并且存到二维数组中

来源:互联网 发布:海南儋州网络诈骗 编辑:程序博客网 时间:2024/05/23 19:13

这几天因为在做作业,所以不仅会想到这一类有关的问题。现在我需要实现的是讲txt文件的数据读取出来并且存储到一个二维数组中。,首先为了对待什么样的矩阵我们都可以读取,我们就要设置一个动态的矩阵,这样当我们知道txt文本中矩阵的维数的时候,就可以直接在程序中输入矩阵的维数,在程序的内部就创建了一个适当的二维矩阵来存储我们的 数据。于是这个程序遇到第一个难点,怎样来动态的创建一个二维的矩阵:

int m,n;
int **p=new int*[m];
for(int i=0;i<m;i++)
{
p[i]=new int[n]; 
}

当然这个地方的n和m是有用户输入。现在我们要讲txt数据拿到程序中来,我们在程序中设置一个容器用来盛装这些数据,容器创建好了,我们就要从txt文本中获取数据,当然在其他的博客中已经介绍了怎样来获取数据在其他的博文中已经有所说,上一次从txt文本中读取数据是用到的函数fread,在这里我们使用另外的一个函数fscanf(*file,"%f",&);这个里面参数的意思是,第一个是文件的地址,第二个是所读取的数据类型,第三个是我们读取数据要将他们存储的地址,也即是上面我们所创建的文件的地址。卖关子到现在,还是让我们看一下源程序吧:

#include<iostream>
#include<stdio.h>
using namespace std;
int main()
{
int n,m;//矩阵的维数
       //我们要做的是从txt文本中读取一个矩阵
cout<<"输入矩阵的维数:"<<endl;
        cin>>n>>m;
//创建一个动态的二维矩阵
float **A=new float*[n];
           for(int k=0;k<m;k++)
  {
               A[k]=new float[m];
  }
         FILE *fp=fopen("data.txt","r");
if(!fp)
{
cout<<"Sorry 文件打开失败!"<<endl;
}

     //从文件中获取数据,并且存储到数据
       for(int i=0;i<n;i++)
{
for(int j=0;j<m;j++)
{
                     fscanf(fp,"%f",&A[i][j]);
}
}

      //检验是不是从文件中获取到数据,并且存储到二维数据中
for(int i1=0;i1<n;i1++)
{
for(int j1=0;j1<m;j1++)
{
                     cout<<A[i1][j1]<<endl;
}
}
    fclose(fp);
    return 0;
}


0 0
原创粉丝点击