1、使用 access()
函数(推荐方法)
在 POSIX 系统(如 Linux、MacOS)中,access()
函数是检查文件存在与否的标准方法。它检查文件的可访问性,包括读取、写入或执行权限。要检查文件是否存在,只需要检查 access()
返回值。
#include <stdio.h> #include <unistd.h> // access() #include <sys/types.h> #include <sys/stat.h> int main() { const char *filename = "example.txt"; // 检查文件是否存在 if (access(filename, F_OK) != -1) { printf("File exists!\n"); } else { printf("File does not exist!\n"); } return 0; }
2、使用 fopen()
函数
使用 fopen()
函数尝试打开文件并检查返回值。虽然 fopen()
更多用于文件的读写操作,但它也可以用于检查文件是否存在。
#include <stdio.h> int main() { const char *filename = "example.txt"; FILE *file = fopen(filename, "r"); if (file) { printf("File exists!\n"); fclose(file); // 文件打开成功后,记得关闭文件 } else { printf("File does not exist!\n"); } return 0; }
3、使用 stat()
函数
在 POSIX 系统中,stat()
函数也可以用来检查文件是否存在。它获取文件的状态信息,如果文件存在,stat()
返回 0,否则返回 -1。
#include <stdio.h> #include <sys/stat.h> int main() { const char *filename = "example.txt"; struct stat buffer; if (stat(filename, &buffer) == 0) { printf("File exists!\n"); } else { printf("File does not exist!\n"); } return 0; }
4、使用 open()
函数(Linux/Unix)
在低级别的文件操作中,可以使用 open()
函数来检查文件是否存在。这个方法适用于文件的打开和访问。
#include <fcntl.h> #include <unistd.h> int main() { const char *filename = "example.txt"; int file = open(filename, O_RDONLY); if (file != -1) { printf("File exists!\n"); close(file); // 文件打开成功后,记得关闭文件 } else { printf("File does not exist!\n"); } return 0; }