Как определить, является ли заданный путь директорией или файлом? (C/C++)
Я использую язык C и иногда мне нужно работать с путями, например:
- C:\Whatever
- C:\Whatever\
- C:\Whatever\Somefile
Есть ли способ проверить, является ли данный путь директорией или файлом?
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
.
Как изменить цвет вывода echo в Linux
Разница между const int*, const int * const и int * const?
Почему переменные нельзя объявлять в операторе switch?
Как вывести список символов из .so файла?
`unsigned int` против `size_t`: когда и что использовать?