2017-05-08 38 views
0

我需要寫一個數組,其部分分散在代碼中。在循環中使用`fwrite`是不是很好?

總之,我的代碼是這樣的:

(...) 
FILE *f = fopen(filepath, "wb"); // wb -write binary 

for (uint i = 0; i < num_points; i++) { 
    fwrite(points[i].loc, sizeof(float[3]), 1, f); 
} 

fclose(f); 

正如你所看到的,我的解決辦法是寫在文件前面的陣列的每一個新的組成部分。

但是這是否有效率問題或內存讀取?我應該在RAM中分配整個數組然後寫入文件嗎?

+4

'fwrite'爲你處理緩衝。 –

+0

另外:'unsigned',IMO,比'uint'更好。 – chux

+0

假設'points [i] .loc' __is__'float'的類型,它就是'sizeof(float)'而不是'sizeof(float [3])''。 –

回答

2

fwrite會緩衝你的數據直到它的緩衝區已滿,或者是fflush/fclose/etc。叫做。所以它不會在每次迭代中執行系統調用。

+0

不錯。我很高興聽到:) –

相關問題