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結束

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); } |
- 2 回答
- 0 關注
- 125 瀏覽
添加回答
舉報