Определить родительскую директорию файла по его заданному пути
#include <libgen.h>char * dirname( char *path );
libc
Функция dirname() получает на вход указатель на символьную строку, которая содержит путь к файлу/директории, и возвращает указатель на строку, содержащую путь к родительской директории этого объекта. Завершающие символы “/” исходного пути path игнорируются.
Если путь не содержит символ “/”, path является указателем на NULL
или указывает на пустую строку, то функция dirname() возвращает указатель на строку, состоящую из “.” (точки).
Вместе функции dirname() и basename() дают полный путь к файлу. Выражение dirname( path ) получает путь к директории, в которой находится basename( path ).
![]() | Функция dirname() может изменять строку, на которую указывает path, и может вернуть указатель на статическое хранилище. |
Указатель на строку, содержащую родительскую директорию файла. Если path - указатель на NULL
или на пустую строку, возвращается указатель на строку ".".
Ввод → вывод
Следующий фрагмент кода считывает путь к файлу, меняет текущую рабочую директорию на родиетльскую и открывает файл:
char path[BUFF_SIZE], *pathcopy;int fd;fgets( path, BUFF_SIZE, stdin );pathcopy = strdup( path );chdir( dirname( pathcopy ) );fd = open( basename( path ), O_RDONLY );
POSIX 1003.1 X/Open Systems Interfaces Extension
Предыдущий раздел: Описание API системной библиотеки