我正在用C編寫一個程序,它應該從任意長度的文件中讀取雙精度數組。如何停止在EOF?我已經嘗試使用FEOF,但後來讀討論:如何將c中的整個文件讀入數組數組
Why is 「while (!feof (file))」 always wrong?
話又說回來,他們關心的字符串,而不是數字。所以當讀取形式爲「4 23.3 2 1.2」的文件時,如何聲明循環條件,以便我的數組A具有來自文件的所有數字並且沒有更多(也就是迭代器N = A的長度)?
下面是我用feof編寫的代碼部分,它在A中產生了太多的條目。重新分配部分基於http://www.cplusplus.com/reference/cstdlib/realloc/示例。
int N = 0;
double *A = NULL;
double *more_space;
double buff = 0;
FILE *data;
data = fopen(data.dat,"r");
while(feof(data) == 0) {
fscanf(data, "%lg", &buff);
more_space = realloc(A, (N+1)*sizeof(double));
A = more_space;
A[N] = buff;
N++;
}
結果嘗試讀取大緩衝的時間,而且比scanfing它... – vrdhn
'而(!FEOF(流)){...} '由於邏輯問題是錯誤的,它不是特定於字符串或數字。邏輯僞代碼應該是'while(有更多的數據){做一些與數據有關的事情}當沒有更多的數據時,循環終止。只有在那個時候檢查feof纔有意義。例如,如果你的循環結束了,但你沒有完成,也許在你的文件中有一些無效的數據,或者可能發生讀取錯誤 – Brandin