[C++] 浮點數寫入檔案出現奇怪的數字
求助版上的前輩們~~~
我有一個文字檔,一行有8個指數浮點數,整個檔案有很多行這樣的數字,而且每一行
的前方有10個空格。
5.868966e+001 7.524138e+001 9.889655e+001 4.682759e+001 8.820690e+001
1.214828e+002 1.634138e+002 8.200000e+001
(註:因BBS排版所以跨行了,在檔案中是同一行)
我要做的是把從 1.txt 讀進來後,轉成一般浮點數格式後,再寫到 2.txt 去
而且要變成如以下的排列方式
58.6897
75.2414
98.8966
46.8276
88.2069
12.1483
16.3414
82.0000
我的困擾就是,雖然看似指數浮點數有轉成一般浮點數格式,但是寫入到檔案時卻變成
58.68978.689668.68966e+0066896608966096606606001111
75.24145.241385.24138e+0062413804138013803808001111
98.89668.896558.89655e+0068965509655065505505001111
46.82766.827596.82759e+0068275902759075905909001111
88.20698.20698.2069e+00620690069006900900001111
121.48321.48282.14828e+0071.4828e+00648280082800280080002222
163.41463.41386.34138e+0073.4138e+00641380013800380080002222
8222e+0060000001111
請問我是什麼地方做錯了呢?? 謝謝
==============================程式碼片斷如下:================================
char buffer[256]; //用來暫放從檔案裡讀進來的資料
float f;
ifstream fin("1.txt");
ofstream fout("2.txt");
fin.getline(buffer,256,'\n');
//因每一行固定有10個空格,所以我直接從第11個位置開始處理
for(int pos=11;pos<=24;pos++)
{
//這是為了讓下一個數字被輸出到下一行的判斷1,
//如果有值而且不是空白就輸出到目前的檔案位置
if((buffer[pos]) && (buffer[pos]!=' '))
{
f=atof(&buffer[pos]);
fout<<f;
//這是為了讓下一個數字被輸出到下一行的判斷2,
//如果陣列下一個值是空白就輸出換行符號
if(buffer[pos+1]==' ')
fout<<endl;
}
}
for(int pos=25;pos<=255;pos++)
{
//這是為了讓下一個數字被輸出到下一行的判斷3,
//如果有值而且不是空白就輸出到目前的檔案位置
if((buffer[pos]) && (buffer[pos]!=' '))
{
f=atof(&buffer[pos]);
fout<<f;
//這是為了讓下一個數字被輸出到下一行的判斷4,
//如果陣列下一個值是空白或陣列結尾符號就輸出換行符號
if(buffer[pos+1]==' ' || buffer[pos+1]=='\0')
fout<<endl;
}
}
fin.close();
fout.close();
※ 編輯: Uihc 來自: 140.112.64.235 (11/19 13:38)
--
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.112.64.235
※ 編輯: Uihc 來自: 140.112.64.235 (11/19 13:55)
討論串 (同標題文章)
Programming 近期熱門文章
PTT數位生活區 即時熱門文章