If we want to see whether certain file exists or not before doing some operation like read/write etc, then C provides an API called “access”. access() checks whether the calling process can access the file pathname. The declaration of “access” API looks as below, int access(const char *pathname, int mode); To check if a file is present or not, we need to use mode as “F_OK”.

Command line execution

Terminalbash
gcc -o check_if_file_present check_if_file_present.c  $ ./check_if_file_present check_if_file_present.c $ ./check_if_file_present check_if_file_present.c  check_if_file_present.c is present!!  Let’s now check if we have a file “test_file.pdf” $ ./check_if_file_present test_file.pdf ERROR: test_file.pdf doesn't exist!

Implementation details

The below program, passes an argument of filename with absolute path, OR check a default file “adb” is present or not. $ vim check_if_file_present.c #include <stdio.h> // for printf #include <stdlib.h> // for malloc #include <string.h> // for strcpy #include <unistd.h> // for access int main(int argc, char **argv) { int result; //allocate memory of 512 bytes char *filename = (char *)malloc(512); if (argc < 2) { strcpy(filename, "/usr/bin/adb"); } else { strcpy(filename, argv[1]); } result = access (filename, F_OK); // F_OK tests existence also (R_OK,W_OK,X_OK). // for readable, writeable, executable if ( result == 0 ) { printf("%s exists!!\n",filename); } else { printf("ERROR: %s doesn't exist!\n",filename); } //free allocated memory free(filename); return 0; } $ gcc -o check_if_file_present check_if_file_present.c $ ./check_if_file_present check_if_file_present.c $ ./check_if_file_present check_if_file_present.c check_if_file_present.c is present!! Let’s now check if we have a file “test_file.pdf” $ ./check_if_file_present test_file.pdf ERROR: test_file.pdf doesn't exist!

Gotchas and common issues

  • Permission checks - verify user access rights and sudo privileges before executing system-level operations.

  • Environment configuration - double-check path variables and dependency versions to prevent runtime failures.

  • Backup safeguards - maintain configuration backups before applying system or database modifications.

Following these steps ensures clean configuration and reliable execution for check if a file exists in c.