c - 如何通过 C89 检查文件是否存在?

标签 c

我为我糟糕的英语道歉。

不同的文件可以有不同的权限。例如,我可以没有文件读/写权限,但该文件存在。如何通过 C89 检查此类文件是否存在?

谢谢。 最好的问候

最佳答案

纯 ISO C89 中,没有检查文件是否存在的良好且可移植的方法。但是,有实现定义的解决方案或其他特定于操作系统的扩展。例如:

int file_exists(const char *name)
{
     return access(name, F_OK) == 0;
}

请注意,此 (access()) 不是 C89 的一部分,但大多数我们关心的系统都有它。

或者有

int file_exists(const char *name)
{
    FILE *f = fopen(name, "r");
    if ((f == NULL) && (errno == ENOENT)) {
        return 0;
    }
    fclose(f);
    return 1;
}

这又不是 C89,但大多数符合 C89 的系统将提供 ENOENT

另一种选择是使用 stat() 函数,如果文件不存在,它也会返回 -1 并将 errno 设置为 ENOENT不存在。

关于c - 如何通过 C89 检查文件是否存在?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12659284/

相关文章:

c - 在C中交换二维数组(指针到指针)

c - 内存文件的文件路径

c - 111-D 返回 0 时无法访问语句

c - 下面的代码怎么会出现堆栈粉碎错误呢?

c - 表面和纹理的区别(SDL/通用)

c - 在不使用指针的情况下模拟 C 中的多态性

python - 如何编写 python 代码来访问用 C 编写的程序的输入和输出?

c - 如何为结构体的字段动态分配内存?

c - 在c中动态初始化3D字符数组

我可以从 GPIO 的输出引脚读取有效信号吗?