[C/C++] 判斷檔案是否存在 file_exists

在 PHP 函式裡面,有直接 file_exists 可以使用,相當方便:

1
2
3
4
5
<?php
if(file_exists("files/appleboy.c")) {
    echo "File found!";
}
?>

在 C 裡面該如何實做?有兩種方式如下:

1. 直接開檔

1
2
3
4
5
6
7
8
9
bool file_exists(const char * filename)
{
    if (FILE * file = fopen(filename, "r"))
    {
        fclose(file);
        return true;
    }
    return false;
}

C++ 寫法

1
2
3
4
5
6
7
8
std::fstream foo;

foo.open("bar");

if(foo.is_open() == true)
     std::cout << "Exist";
else 
     std::cout << "Doesn't Exist";

2. 讀取檔案狀態

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
#include<sys/stat.h>
int file_exists (char * fileName)
{
   struct stat buf;
   int i = stat ( fileName, &buf );
     /* File found */
     if ( i == 0 )
     {
       return 1;
     }
     return 0;

}

See also