c++怎么将.txt中的数据读入二维数组中
c++如何将.txt中的数据读入二维数组中?
例如有这样的数据:
1 4 67 77 89......
2 4 56 78 82......
..........
数据的行数和列数位置。大家帮帮忙吧,初学c++,有好多地方不懂啊。尤其是动态生成二维数组。
------解决方案--------------------
例如有这样的数据:
1 4 67 77 89......
2 4 56 78 82......
..........
数据的行数和列数位置。大家帮帮忙吧,初学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; } //发个二进制读写文件的