為什麼這篇Fscanf 陣列鄉民發文收入到精華區:因為在Fscanf 陣列這個討論話題中,有許多相關的文章在討論,這篇最有參考價值!作者ShoPeter (Sho)看板C_and_CPP標題[問題] fscanf讀txt檔大量數值錯...
開發平台(Platform): VC++
問題(Question):
使用fscanf讀取txt檔內的數值(double)並放入陣列
當fscanf執行到一定次數程式會崩潰
餵入的資料(Input):
.txt檔 內容為單純數值用\t與\n分隔
Ex:
120.25 15687 0.568
4568 452.5 213.111
預期的正確結果(Expected Output):
讀入所有資料
錯誤結果(Wrong Output):
windows已觸發XXX.exe之中斷點
http://imgur.com/Pf3qYvV
程式碼(Code):(請善用置底文網頁, 記得排版)
for (i = 0; i < 8; i++)
for (j = 0; j < 1024; j++)
fscanf(f, "%lf", &matrix[i][j];
補充說明(Supplement):
buffer是沒問題的,用動態配置宣告
有另外直接寫入讀出測試過
fscanf的行為也正確
約執行8*900次是沒問題的,數值也正確
但大概在8*97X次時,就會發生不明的崩潰
不知道有沒有人遇過一樣的問題
或是有更好的讀法
謝謝
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 27.243.75.56
上面的CODE是直接打的,漏括號了,原CODE沒漏
下面是我動態宣告的方式(原CODE是double)
int **data;
data = (int**)new char [height * sizeof(int *) + width * height * sizeof(int)];
for (i = 0; i < height; i++)
data[i] = (int *)data + height + i * width;
問題應該不是出現在BUFFER
我有用迴圈直接給值寫滿整個BUFFER,再讀出確認
是沒有問題的
※ 編輯: ShoPeter 來自: 27.243.75.56 (03/14 14:06)