c - 如何判断在 C 中打开输入文件是否失败

标签 c file-io error-handling

动机

如果我确定给定的输入文件存在,我想循环直到为该文件创建“文件流”不会失败。

问题

我知道通过以下检查我们可以判断在 C 中打开输入是否失败(因此,该文件存在于本地),

#include <stdio.h>
#include <stdlib.h>

int main()
{
    FILE *rec_in_file = fopen("filename.txt", "r");

    // If file cannot be opened, report error and exit
    if (rec_in_file == NULL)
    {
        fprintf(stderr, "Could not open input file!");
        exit(1);
    }

    return 0;
}

但是我如何判断文件是否存在但在创建“文件流”时出现问题?在对该问题的初步研究中,我无法提出处理此案的说法。

最佳答案

检查errno 或调用perror() 可用于在fopen() 失败后获取信息。问题是这些方法不需要产生任何与 I/O 错误相关的信息。实现通常会这样做,但不是必需的,而且信息各不相同。

一般来说,您需要使用标准 C 之外的函数,例如 access()stat()(大多数 Unix 库都支持), PathFileExists()(Windows API),或主机系统提供的其他一些方法。

关于c - 如何判断在 C 中打开输入文件是否失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36489178/

相关文章:

java - main 中的 lisp 表达式求值器异常

c - sizeof(文本) 不等于 : fp_len + 1

使用 pthread.h 进行多线程 C 编程

c - Qt:如何在 Microsoft Visual C .NET 2005 下构建 Qt

c - 使用 mkfifo 阻塞读取直到写入

javascript - 如何处理前端的标准错误对象?

c - in_addr_t 到字符串

c - 在 c 中使用 fscanf() 从格式化的测试文件中读取

python - 如何在 python 3.3.3 中导入文件

python-3.x - 在Python中使用try和except时如何仍然显示错误消息