我寫一些代碼,簡單地寫入double數組爲二進制文件使用的fwrite寫1D陣列作爲單個塊與逐元素
#include<stdio.h>
void main(void) {
// Open binary files
FILE *pFileResultsBin1;
FILE *pFileResultsBin2;
pFileResultsBin1 = fopen("results1.bin","wb+");
pFileResultsBin2 = fopen("results2.bin","wb+");
// Create array
double arr[3];
arr[0] = 1.0;
arr[1] = 2.0;
arr[2] = 3.0;
// Write array to binary files 10 times
int i;
// Method using sizeof(arr)
for(i=0;i<10;i++){
fwrite(&arr, sizeof(arr),1,pFileResultsBin1)
}
// Method using sizeof(arr[0])
for(i=0;i<10;i++){
fwrite(&arr, sizeof(arr[0]),3,pFileResultsBin2)
}
// Close files
fclose(pFileResultsBin1);
fclose(pFileResultsBin2);
}
當讀取示例互聯網用於寫入陣列上通常使用sizeof(arr[0])
的方法,但在使用sizeof(arr)
時有沒有什麼缺點?我想這兩種方法,並且都使用MATLAB正確讀取:
FID1 = fopen(result1.bin);
FID2 = fopen(result1.bin);
A = fread(FID1,[3 inf],'*double','ieee-le');
B = fread(FID2,[3 inf],'*double','ieee-le');
親切的問候,
EJG
PS。我沒有嘗試編譯這個特定的例子,因爲我在沒有編譯器的計算機上。
確實有可能計算機不會將數組元素存儲在有序的內存位置,因爲索引是? – EJG89
一個單詞中字節的順序更可能是不同的(大vs小端),但問題是可能的(儘管我不知道任何特定的機器會顯示它)。 –