[C++] 浮點數寫入檔案出現奇怪的數字

看板Programming作者 (我 有我的倔強...)時間18年前 (2007/11/19 13:55), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串1/4 (看更多)
求助版上的前輩們~~~ 我有一個文字檔,一行有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)
文章代碼(AID): #17GILIjP (Programming)
文章代碼(AID): #17GILIjP (Programming)