fopen函数的问题:函数返回NULL的情况有哪些???
我遇到的问题是这样的:fp=fopen("disk.dat","rb"))==NULL,这条语句成立的原因我知道可能是文件不存在,可是fp=fopen("disk.dat...
我遇到的问题是这样的:fp = fopen("disk.dat","rb"))==NULL,这条语句成立的原因我知道可能是文件不存在,可是fp = fopen("disk.dat","wb"))==NULL这条语句成立的原因有哪些?我知道rb是读写打开一个二进制文件,该文件必须已经存在,且只能从该文件读出。而用“wb”打开的文件只能向该文件写入。若打开的文件不存在,则以指定的文件名建立该文件,若打开的文件已经存在,则将该文件删去,重建一个新文件。所以wb也就不存在因为文件不存在而返回NULL的情况了,那在什么情况下,可能会返回NULL呢???先谢谢了!!
展开
展开全部
应该写 (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<bool>(fopen("disk.dat", "rb") == NULL);
另外,为了程序安全,最好使用 fopen_s,fopen 有安全隐患。
这个火不知道救得及不及时 = =
前面没括号,如果 fopen 返回 NULL,fp 就是 1,否则就是 NULL。
你的语句本质上是把后面 fopen 返回值和 NULL 比较的 bool 值给了fp。
相当于
if(fopen("disk.dat", "rb")) == NULL)
fp = true;
else
fp = false;
或者
fp = static_cast<bool>(fopen("disk.dat", "rb") == NULL);
另外,为了程序安全,最好使用 fopen_s,fopen 有安全隐患。
这个火不知道救得及不及时 = =
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
文件打开失败时,函数会返回null值。比如:
以“r”方式打开一个不存在的文件,就会返回NULL;
以"w"方式打开一个不允许更改的文件,或由其他程序打开而锁定的文件,就会返回NULL;
以“r”方式打开一个不存在的文件,就会返回NULL;
以"w"方式打开一个不允许更改的文件,或由其他程序打开而锁定的文件,就会返回NULL;
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
楼上说法正确
还有就是你比如你想打开F盘的某个文件
但你电脑根本没有F盘,这时就会出现IO异常,就会返回NULL
请采纳为最佳答案,谢谢!
还有就是你比如你想打开F盘的某个文件
但你电脑根本没有F盘,这时就会出现IO异常,就会返回NULL
请采纳为最佳答案,谢谢!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
文件不存在啦
读写权限不够啦等等
读写权限不够啦等等
追问
我的权限也够,那是不是就没有了?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询