c++怎么将.txt中的数据读入二维数组中

如题所述

例如有这样的数据:数据的行数和列数位置。大家帮帮忙吧,初学c++,有好多地方不懂啊。尤其是动态生成二维数组。------解决方案--------------------------------------------------------C/C++ code #include<iostream> #include<fstream> using namespace std; int main() { int n,m; cin>>n>>m;//输出入行列 int i,j; //动态申请二维数组 int **a; a=new int*[n]; for(i=0;i<n;i++) a[i]=new int[m]; ifstream fin("in.txt");//打开文件 //读入数字 for(i=0;i<n;i++) for(j=0;j<m;j++) fin>>a[i][j]; fin.close(); //输出刚刚读入的数据 for(i=0;i<n;i++,cout<<endl) for(j=0;j<m;j++) cout<<a[i][j]; //释放申请的空间 for(i=0;i<n;i++) delete []a[i]; delete []a; return 0; }------解决方案--------------------------------------------------------使用指向指针的指针如: int row = 100;int col = 100;int **row = new int[row];for (int i = 0; i < col; ++i){row[i] = new int[col];}这样就可以像使用二维数组一样使用了,不过删除麻烦还可以使用一维计算位置的方式计算出来,数据结构里面好像讲到过相关的东西------解决方案--------------------------------------------------------C/C++ code #include "stdio.h" #include <stdlib.h> int average(char *pFilePath); void main() { FILE *fp; int nData[10]; for(int i=0;i<10;i++) { printf("请输入第%d个数:",i+1); scanf("%d",nData+i); } fp = fopen("c:\\data.txt", "wb");//b表示以二进制的形式写入文件 if(fp!=NULL) { fwrite(nData,sizeof(int),10,fp); fclose(fp); //写完文件后,可以看一下文件大小,40个字节, //其实就是数组的大小 sizeof(int)*10 = 40 以前在学校里没搞明白的问题,现在明白了 } printf("平均值大小:%d\n",average("c:\\data.txt") ); system("pause"); } int average(char *pFilePath) { int nData[10]={0}; FILE *fp; fp = fopen(pFilePath, "rb");//b表示以二进制的形式 if(fp!=NULL) { fread(nData,sizeof(int),10,fp); fclose(fp); } else { printf("读取文件出错了..."); return 0 ; } int nSum = 0 ; for(int i=0;i<10;i++) { printf("第%d个数:\t内存地址%8x\t值:%d\n",i+1,nData+i,*(nData+i)); nSum += *(nData+i) ; } return nSum/10; } //发个二进制读写文件的
温馨提示:答案为网友推荐,仅供参考
相似回答