我有兩個文件,一個叫做N.bin,另一個叫做R.bin。在使用了幾個月後,我只注意到我在那裏犯了一個錯誤。但是,我認爲系統會因此而崩潰。但首先它沒有,第二它給出了正確的結果。以下是代碼:爲什麼此代碼可以正常工作並給出正確的結果?
請參閱第19行,我是如何錯誤地從Nfile流入而不是從Rfile流入的。
//讀取文件N
1 long world_features_lSize;
2 FILE* NFile;
3 double* N;
4 NFile=fopen("N.bin","r+b");
5
6 fseek (NFile , 0 , SEEK_END);
7 lSize = ftell (NFile);
8 fseek (NFile , 0 , SEEK_SET);
9 N = (double*) malloc (sizeof(double)*lSize);
10 result = fread (N,1,lSize,NFile);
11 fclose(NFile);
////////////////// Read R
12 FILE* RFile;
13 double* R;
14 RFile=fopen("R.bin","r+b");
15 fseek (RFile , 0 , SEEK_END);
16 lSize = ftell (RFile);
17 fseek (RFile , 0 , SEEK_SET);
18 R = (double*) malloc (sizeof(double)*lSize);
19 result = fread (R,1,lSize,NFile);
20 fclose(RFile);
爲什麼此代碼的工作請諮詢我!
'RFile'落得被存儲在同一個地方'NFile'無論出於何種原因(或相同的文件描述符或一切用過的)。 – user786653
可能N和R共享相同的Filedescriptor,因爲你關閉了NFile釋放它的描述符,當打開RFile時,OS只給了你相同的描述符,但是爲了不同的文件。我假設你在* NIX平臺上。 – RedX