มีวิธีที่ดีกว่าเพียงแค่พยายามเปิดไฟล์หรือไม่
int exists(const char *fname)
{
FILE *file;
if ((file = fopen(fname, "r")))
{
fclose(file);
return 1;
}
return 0;
}
fopen()/ fclose()วิธีคือคุณอาจไม่สามารถเปิดไฟล์เพื่ออ่านแม้ว่ามันจะมีอยู่ ตัวอย่างเช่น/dev/kmemมีอยู่ แต่กระบวนการส่วนใหญ่ไม่สามารถเปิดได้แม้กระทั่งการอ่าน /etc/shadowเป็นอีกหนึ่งไฟล์ดังกล่าว แน่นอนว่าทั้งสองstat()และaccess()พึ่งพาความสามารถในการเข้าถึงไดเรกทอรีที่มีไฟล์; การเดิมพันทั้งหมดจะปิดหากคุณไม่สามารถทำได้ (ไม่ได้รับอนุญาตให้ดำเนินการในไดเรกทอรีที่มีไฟล์)
if (file = fopen(fname, "r"))จะให้คำเตือน ใช้วงเล็บล้อมรอบคำสั่งภายในคำสั่ง ifif ((file = fopen(fname, "r")))