我有两个文件,一个叫做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