亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何從第9行開始讀呢…… 或者從多少個字節以后開始讀?

如何從第9行開始讀呢…… 或者從多少個字節以后開始讀?

C++
開滿天機 2023-02-17 18:14:26
txt文件大體如下:File:F:\20080808.txtCreated:2008年8月8日 22:00:51Header time format:AbsoluteTime of first sample:221 10:56:27.4641102Title:Time Ch C1 Ch C2  s Volt Volt0 0.24 0.162E-006 0.24 0.184E-006 0.22 0.216E-006 0.23 0.218E-006 0.24 0.171E-005 0.22 0.171.2E-005 0.21 0.181.4E-005 0.18 0.181.6E-005 0.15 0.141.8E-005 0.11 0.152E-005 0.15 0.192.2E-005 0.20 0.202.4E-005 0.22 0.192.6E-005 0.18 0.152.8E-005 0.20 0.173E-005 0.16 0.183.2E-005 0.24 0.183.4E-005 0.22 0.213.6E-005 0.23 0.213.8E-005 0.24 0.174E-005 0.22 0.174.2E-005 0.21 0.184.4E-005 0.18 0.184.6E-005 0.15 0.144.8E-005 0.11 0.155E-005 0.15 0.19讀取的時候不要前幾行,只讀下面的數據部分,將數據部分的第二列放到float data1[i]數組中,第三列放到float data2[i]數組中,可在以下的程序基礎上繼續……CFileDialog fdlg(TRUE,"txt",NULL,NULL,"fff(*.txt)|*.txt|All files(*.*)|*.*||",NULL);fdlg.m_ofn.lpstrTitle="文件打開";if(fdlg.DoModal()==IDOK){CString filename;filename=fdlg.GetPathName();CFile f(fdlg.GetFileName(),CFile::modeRead);char *pBuf;DWORD dwFileLen;dwFileLen=f.GetLength();
查看完整描述

2 回答

?
白衣染霜花

TA貢獻1796條經驗 獲得超10個贊

一行一行處理的話建議使用
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結束

 


查看完整回答
反對 回復 2023-02-20
?
慕神8447489

TA貢獻1780條經驗 獲得超1個贊

1.用fgets函數可以讀取文件中某行的數據,某列數據就必須一個一個讀入每行的第幾個字符,再存入到一個字符串當中。

2.例程:


#include<stdio.h>#include<string.h>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);}

 


查看完整回答
反對 回復 2023-02-20
  • 2 回答
  • 0 關注
  • 125 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號