检查文件存在于C中

Dun*_*unc 7 c file-io

我正在尝试在C应用程序中打开一个文件.在尝试读取文件之前,如何检查文件是否存在?

Hei*_*bug 12

试着打开它:

FILE * file;
file = fopen("file_name", "r"));
if (file){
   //file exists and can be opened 
   //...
   // close file when you're done
   fclose(file);
}else{
   //file doesn't exists or cannot be opened (es. you don't have access permission )
}
Run Code Online (Sandbox Code Playgroud)


jim*_*ara 7

存在:调用stat(),检查返回码,没有副作用.在UNIX上,也可以调用access().

如果你只是按照你的要求做事,你会这样做,FileA是否存在,不一定能打开它.示例:在UNIX中,具有只执行权限的文件将无法打开,但仍然存在.

有了stat你可以检查ST_MODE访问.但是,因为您打算打开文件,fopen或者open可能是您想要的.

  • @Lundin:他也没有要求标准的非Unix函数.这个答案是关于主题的.除此之外,它们都是POSIX的标准配置,它本身就是*标准. (4认同)
  • @Lundin:不要那么迂腐.你假设太多了.根据您的定义,标记为C的大量问题不应被标记为因为他们询问或回答"非C语言函数".这太荒谬了.这个答案本身就很有用.你似乎并不太了解downvote特权. (3认同)