fread未返回C中已关闭文件的错误



根据我的理解,在用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

最新更新