根据我的理解,在用fclose关闭文件后,fread应该无法读取该文件。但是,当运行此代码时
int main(int argc, char* argv[]){`
File *fid;
int test;
char buf_read [5];
fid = fopen("test.txt", "rb");
fclose(fid);
test = fread(buf_read, 1, 5, fid);
fprintf(stdout, "%d n", test);
}
它打印5,而根据我对fread工作原理的理解,它应该打印0,因为fread应该无法从关闭的文件中读取。fread或fclose的某些功能我在这里缺少了吗?
来自fclose
手册页:
对流的任何进一步访问(包括对fclose((的另一个调用(都会导致未定义的行为。
您正在调用未定义的行为;任何事情都有可能发生,包括你正在经历的看似正确的行为。
您能做的最好的事情是在调用fclose
之后立即将流(fid
(设置为NULL
。