用vc++逐行读取文本文件txt里面的数据,并且复制给数组

我有一个txt格式文件,里面每行8个数据,用逗号隔开的。一共近2万行。每一行的第i个数据都是对应的同一类型数据,比如说的角度的变化,温度变化之类的。
所以分别读出后的操作是,比如把每一行第一个数据赋值同一个数组里面,m[0]等于第一行第一个数据,m[1]等于第二行第一个数据。。。n[0]等于第一行第二个数据,n[1]等于第二行第二个数据。。。以此类推。。。
下面放出我的txt的文件的其中几行作为例子:
90,86,-89,0,-3145,0,5,5
90,77,-90,0,-3149,0,5,5
90,72,-90,0,-3153,0,5,5
90,67,-90,0,-3156,0,5,5
90,60,-90,0,-3160,0,5,5
90,65,-90,0,-3163,0,5,5
90,62,-90,0,-3167,0,5,5
90,59,-90,0,-3170,0,5,5
90,51,-90,0,-3174,0,5,5
90,57,-90,0,-3177,0,5,5
90,57,-90,0,-3181,0,5,5
90,65,-90,0,-3185,0,5,5
90,60,-90,0,-3188,0,5,5
90,62,-90,0,-3192,0,5,5
90,69,-90,0,-3195,0,5,5
90,64,-90,0,-3199,0,5,5
90,69,-90,0,-3202,0,5,5
......
.....
....

我是C++刚接触一周的菜鸟。。请写出详细的代码。。万分感谢。。新人分不多,各位高手帮帮忙!!感谢!!!

#include<stdio.h>
#include<stdlib.h>
#define MAX 20000
char *srcfile = "data.txt"; //文件名
int data[MAX][8];
int main()
{
FILE *src = fopen(src,"r");
int i,j;
for(i = 0;i < MAX;i++)
{
fscanf(srcfile,"%d,%d,%d,%d,%d,%d,%d,%d",&data[i][0],&data[i][1],&data[i][2],&data[i][3],&data[i][4],&data[i][5],&data[i][6],&data[i][7]);
if(feof(src))
break;
}
return 0;
}
如果数据都是整数的话这个代码应该没问题了
温馨提示:内容为网友见解,仅供参考
第1个回答  2012-03-21
//好吧 我这个写了个动态分配内存的,根据数据多少分配内存

a[0][0]= 90
a[0][1]= 86
a[0][2]= -89
a[0][3]= 0
a[0][4]=-3145
a[0][5]= 0
a[0][6]= 5
a[0][7]= 5

a[1][0]= 90
a[1][1]= 77
a[1][2]= -90
a[1][3]= 0
a[1][4]=-3149
a[1][5]= 0
a[1][6]= 5
a[1][7]= 5

a[2][0]= 90
a[2][1]= 72
a[2][2]= -90
a[2][3]= 0
a[2][4]=-3153
a[2][5]= 0
a[2][6]= 5
a[2][7]= 5

a[3][0]= 90
a[3][1]= 67
a[3][2]= -90
a[3][3]= 0
a[3][4]=-3156
a[3][5]= 0
a[3][6]= 5
a[3][7]= 5

a[4][0]= 90
a[4][1]= 60
a[4][2]= -90
a[4][3]= 0
a[4][4]=-3160
a[4][5]= 0
a[4][6]= 5
a[4][7]= 5

Press any key to continue

#include <iostream>
#include <string>
#include <fstream>
using namespace std;

int main()
{
int nLen,i,j,row=0,line=0;
char strline[100]="\0";
FILE *fp=fopen("data1.txt","r");
while (fgets(strline,99,fp))line++;
fseek(fp,0,SEEK_SET);
int **pbuffer =(int**)malloc(sizeof(int*)*line);
for (i=0;i<line;i++)
{
pbuffer[i]=(int*)malloc(sizeof(int)*8);
}
for (i=0;i<line;i++)
{
fscanf(fp,"%d,%d,%d,%d,%d,%d,%d,%d\n",
&pbuffer[i][0],&pbuffer[i][1],&pbuffer[i][2],&pbuffer[i][3],
&pbuffer[i][4],&pbuffer[i][5],&pbuffer[i][6],&pbuffer[i][7]);
}
for (i=0;i<line;i++)
{
for (j=0;j<8;j++)
{
printf("a[%d][%d]=%5d\n",i,j,pbuffer[i][j]);
}
printf("\n");
}
for (i=0;i<line;i++)
{
free(pbuffer[i]);
}
free(pbuffer);
fclose(fp);
return 0;
}
相似回答