【发布时间】:2012-12-06 09:20:47
【问题描述】:
可能重复:
What’s the best way to check if a file exists in C? (cross platform)
我想检查一个文件是否存在。我将测试文件的权限更改为“chmod -r somefile”。但是现在它说该文件不存在,即使它确实存在。
所以我假设如果我没有读取权限,我无法使用“fopen r”打开文件。但这意味着没有简单的方法来判断文件是否存在或无法读取/写入?
或者我错过了什么?任何帮助都会很棒。
谢谢!
int doesFileExist(const char* filename)
{
FILE* fptr = fopen(filename, "r");
if (fptr != NULL)
{
fclose(fptr);
printf("File exists\n");
return 1;
}
printf("File doesnt exist\n");
return 0;
}
更新:感谢大家提供这些很棒的链接和解释!
【问题讨论】:
-
嗯..你检查过
errno吗?编辑:试试这个以获得一些错误信息:printf("File doesnt exist: %s\n",strerror(errno));不要忘记包含errno.h标头。 -
这是我讨厌 stdio API 的地方,每当你需要做一些重要的事情,比如调整文件大小,或者移动文件而不复制它并删除旧文件时,你都不走运便携性条款。