如何用C++读取txt文件的每一列,放到数组中?

2024-12-20 05:51:50
推荐回答(4个)
回答1:

一行一行处理的话建议使用
CStdioFile比较方便,下面是示例代码:

CStdioFile f( _T( "f:\\2.txt" ),CFile::modeRead);

CString linebuf;
CString strdata1,strdata2,strdata3;
int index;
int i=0;
int line = 0;//记录行号

float data1[100];//结果
float data2[100];//结果

while(f.ReadString(linebuf))
{

if(line>9)
{
line++;
continue;//如果小于9行就直接跳过去
}else{
line++;
}//通过这里的来控制读取行的特殊要求

index = linebuf.FindOneOf(TEXT(" \t"));
//第一列数据
strdata1 = linebuf.Left(index);
linebuf.Delete(0,index);
linebuf.TrimLeft();

//第二列数据
index = linebuf.FindOneOf(TEXT(" \t"));
strdata2 = linebuf.Left(index);
linebuf.Delete(0,index);
linebuf.TrimLeft();

//第三列数据
index = linebuf.FindOneOf(TEXT(" \t"));
strdata3 = linebuf.Left(index);
linebuf.Delete(0,index);
linebuf.TrimLeft();

//转换数据
//你可以在这里加一些过滤的语句,比如不要头2句,由于我不知道规律,不好去除数据
data1[i] = (float)_tstof(strdata2) ;
data2[i] = (float)_tstof(strdata3) ;

i++;

//防止float数组越界
if (i>=100)
{
break;
}
}//while结束

回答2:

1.用fgets函数可以读取文件中某行的数据,某列数据就必须一个一个读入每行的第几个字符,再存入到一个字符串当中。

2.例程:

#include
#include
void main()
{
  char a[100],b[100],c[100];
  int i=3,j=4,k=0;    //第三行,第四列
  FILE *fp = fopen("data.txt","r");
  while(fgets(c,100,fp)){    //读入每行数据
    i--;
    if(i==0) strcpy(a,c);    //读到第三行数据
    b[k++]=c[j-1];        //把每行的那列字符拷到b中
  }
  b[k]=0;
  printf("第%d行数据:%s\n",i,a);
  printf("第%d列数据:%s\n",j,b);
  fclose(fp);
}

回答3:

fscanf(pf, "%*e%f%f", data1+i, data2+i);

回答4:

一行一行的处理啊,有困难?