读书人

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

发布时间: 2012-09-14 11:53:44 作者: rapoo

c++如何将.txt中的数据读入二维数组中?
例如有这样的数据:
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;}//发个二进制读写文件的 

读书人网 >C++

热点推荐