stdio.h函数fopen()在“w”模式下的错误情况

时间:2016-12-13 23:46:26

标签: c file error-handling null fopen

我已经在写入模式下尝试使用fopen()来尝试查看它是否返回NULL。我尝试打开多个同名文件,并输入无效的文件名。显然,fopen()并不关心再循环名称,因为它每次只打开一个新文件并覆盖任何现有数据。输入无效的文件名只会导致命令行错误。我试过的测试用例都没有导致fopen()返回NULL。

这绝不是我在日常编程中遇到的事情,但我始终遵循从不假设文件永远会成功打开的理念。因此,无论我对文件做什么,我总是对每个文件指针进行错误检查。

但是为了充分了解文件I / O,我发现自己很好奇:fopen()在“w”模式下会返回NULL的场景是什么(如果有的话)?

1 个答案:

答案 0 :(得分:1)

尝试在不存在的目录中打开文件,或者在没有权限覆盖的文件中打开文件,或者在文件名中使用无效字符的文件。在这种情况下,你很快就会得到NULL。

顺便说一下,你的理念很好,检查任何可能失败的电话一般都是个好主意。当然,规则存在例外情况,我不会检查每个printf电话的回传价值,但这通常是因为它以后不太可能会让我感到厌恶。程序