[問題] dev c++ 讀檔

看板C_and_CPP (C/C++)作者 (George)時間16年前 (2010/01/11 18:33), 編輯推噓1(104)
留言5則, 4人參與, 最新討論串1/1
有一個TXT檔 其內容如下 1.00000000000000000E7 -9.14852320345776700E-1 + j2.23140527362037000E-1 2.00000000000000000E7 -7.56271102407572200E-1 + j3.30259949195833790E-1 3.00000000000000000E7 -6.20325924486876090E-1 + j3.46203836609537240E-1 4.00000000000000000E7 -5.27297456754841940E-1 + j3.25494094509534550E-1 5.00000000000000000E7 -4.66616425370004070E-1 + j2.95901262414049970E-1 6.00000000000000000E7 -4.26563640373938120E-1 + j2.67206077303872560E-1 7.00000000000000000E7 -3.99336712989733920E-1 + j2.42070720408910220E-1 8.00000000000000000E7 -3.80219298254262390E-1 + j2.20771782436070390E-1 9.00000000000000000E7 -3.66379976307903870E-1 + j2.02890408973486820E-1 1.00000000000000000E8 -3.56083762341616210E-1 + j1.87875563241802460E-1 1.10000000000000010E8 -3.48236777382851410E-1 + j1.75217261677709700E-1 1.20000000000000000E8 -3.42128594488190800E-1 + j1.64488161571316540E-1 1.30000000000000000E8 -3.37284601517914420E-1 + j1.55342820616875430E-1 1.39999999999999990E8 -3.33379373006832490E-1 + j1.47505361417419790E-1 1.50000000000000000E8 -3.30184449774590490E-1 + j1.40755799763452430E-1 1.60000000000000010E8 -3.27535996871048150E-1 + j1.34918103616574700E-1 1.70000000000000000E8 -3.25314249260481160E-1 + j1.29850571113963830E-1 我的寫法如下 FILE *fps11; double x11,y11,z11; int time11 =0; char filename[60]; printf("please input s11 data filename= "); scanf("%s",filename); if((fps11 =fopen(filename, "r"))==NULL) { printf("no file can open \n"); } else { while(fscanf(fps11,"%lf%lf%lf",&x11,&y11,&z11) ==3) { s11[time11][0].rpart= y11; s11[time11][0].ipart= z11; t11[time11].rpart= x11; t11[time11].ipart=0.0; } } fclose(fps11); 遭遇問題: (1)因為用空白分行,所以如果有未知空白 檔案就讀取不全 (2)讀取完後,不想有j的出現 所以每次要用檔案的時候,都要先把數據修整過才能使用 請問 要怎麼改才能直接讀取所需資料 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 203.64.185.241

01/11 18:40, , 1F
感覺有點像科學研究的計算 你要小心浮點數誤差...
01/11 18:40, 1F

01/11 19:17, , 2F
整行讀出,照固定寬度切開。
01/11 19:17, 2F

01/11 19:23, , 3F
可是如果產生- J的話 是不會會把-號也弄掉
01/11 19:23, 3F

01/11 20:08, , 4F
應該可以把+/-那一格單獨切出來再判斷。
01/11 20:08, 4F

01/12 21:52, , 5F
用"%s " %s後面要空一格 就能依空白拆解項目
01/12 21:52, 5F
文章代碼(AID): #1BIlvlRx (C_and_CPP)
文章代碼(AID): #1BIlvlRx (C_and_CPP)