有几种情况:1.硬盘空间满,不能再创建文件 2.文件名有错误,有非法字符比如?,*等
3.你对那个目录没有创建文件的权限,比如NTFS 4.文件已经存在,但是无法被覆盖或者打开,比如另一个进程已经独占打开了,这是你就不能再打开了
应该写 (fp = fopen("disk.dat", "rb")) == NULL 。
前面没括号,如果 fopen 返回 NULL,fp 就是 1,否则就是 NULL。
你的语句本质上是把后面 fopen 返回值和 NULL 比较的 bool 值给了fp。
相当于
if(fopen("disk.dat", "rb")) == NULL)
fp = true;
else
fp = false;
或者
fp = static_cast
另外,为了程序安全,最好使用 fopen_s,fopen 有安全隐患。
这个火不知道救得及不及时 = =
文件打开失败时,函数会返回null值。比如:
以“r”方式打开一个不存在的文件,就会返回NULL;
以"w"方式打开一个不允许更改的文件,或由其他程序打开而锁定的文件,就会返回NULL;
楼上说法正确
还有就是你比如你想打开F盘的某个文件
但你电脑根本没有F盘,这时就会出现IO异常,就会返回NULL
请采纳为最佳答案,谢谢!
文件不存在啦
读写权限不够啦等等