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;
}