我为我糟糕的英语道歉。
不同的文件可以有不同的权限。例如,我可以没有文件读/写权限,但该文件存在。如何通过 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/