มีวิธีที่ดีกว่าเพียงแค่พยายามเปิดไฟล์หรือไม่
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")))