0

Как определить, является ли заданный путь директорией или файлом? (C/C++)

9

Я использую язык C и иногда мне нужно работать с путями, например:

  • C:\Whatever
  • C:\Whatever\
  • C:\Whatever\Somefile

Есть ли способ проверить, является ли данный путь директорией или файлом?

1 ответ(ов)

1

Функция stat() позволяет получить информацию о файле или каталоге, используя структуру stat. Вот пример кода на C, который показывает, как определить, является ли указанный путь каталогом или файлом:

struct stat s;
if (stat(path, &s) == 0) {
    if (s.st_mode & S_IFDIR) {
        // это каталог
    } else if (s.st_mode & S_IFREG) {
        // это файл
    } else {
        // что-то другое
    }
} else {
    // ошибка
}

В этом примере мы сначала вызываем stat(), передавая путь и указатель на структуру stat. Если вызов успешен (возвращает 0), мы можем проверить права и тип файла с помощью поля st_mode. Для определения, является ли объект каталогом, используется флаг S_IFDIR, а для файла — S_IFREG. Если обе проверки не проходят, значит, это какой-то другой тип, например, символьная или блочная файловая система, сокет и т. д. В случае ошибки выполнения функции мы можем обработать её в блоке else.

Чтобы ответить на вопрос, пожалуйста, войдите или зарегистрируйтесь