如何解决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()的另一个调用)都会导致未定义的行为。
您正在调用未定义的行为;任何事情都可能发生,包括您正在经历的看似正确的行为。
最好的办法是在调用fid
之后立即将流(NULL
)设置为fclose
。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。