如何检测文件是否存在?

时间:2019-01-04 06:16:16

标签: c windows filesystems

我正在用C编程并试图编写可移植的代码。

我的问题是,如何判断文件是否存在并且可读?

我当前正在使用代码:

   f = fopen(filename, "r");
   if (f) printf("File exists!");

在我的程序中,filename由用户设置,应被视为不受信任的输入(例如,filename可能是恶意制作的)。

我的问题是上面的代码不够鲁棒。例如,当在文件名为“ PRN”的窗口上使用时,它将打印“文件存在!”。即使文件系统上不存在此类文件。

我知道我可以在Windows上过滤掉保留的文件名,因为只有十几个文件名,但这听起来像是黑客。另外,我只知道我所知道的。也许还有其他我不知道的“保留”或“特殊”名称。

是否有任何简单且可移植的方法来确定C中是否存在文件?

或者,如果我必须使用OS API,应该使用哪个功能?

0 个答案:

没有答案