Имена файлов сами по себе не несут никакой информации о том, существуют они или нет или являются ли они каталогом с ними - кто-то может изменить его из-под вас.То, что вы хотите сделать, это запустить библиотечный вызов, а именно stat (2), который сообщает, существует ли файл или нет, и что это такое.Со страницы руководства,
[ENOENT] The named file does not exist.
Итак, есть код ошибки, который сообщает (в errno), что файл не существует.Если он существует, вы можете проверить, что это каталог, а не обычный файл.Вы делаете это, проверяя st_mode в возвращаемой структуре:
The status information word st_mode has the following bits:
...
#define S_IFDIR 0040000 /* directory */
Проверьте man-страницу для получения дополнительной информации.