dirname
и
basename
разбивают путь к файлу (заканчивающийся NULL) на каталоги и
имя файла.
Обычно,
dirname
возвращает строку содержащую путь к файлу до последнего знака '/', а
basename
возвращает строку содержащую часть после последнего знака '/'.
Последний знак '/' не считается компонентом пути.
Если
path
не включает в себя слэш, то
dirname
возвращает строку ".", а
basename
возвращает копию
path.
Если
path
это строка из "/", то
dirname
и
basename
возвращают "/".
Если
path
нулевая строка или указывает на нее, то
dirname
и
basename
возвращают строку ".".
Объеденив строки возвращаемые
dirname,
и
basename
можно получить полный путь.
Функции
dirname
и
basename
могут изменить содержание
path,
поэтому если вы хотите сохранить путь,
то он не должен обрабатываться этими функциями. Более того,
dirname
и
basename
могут вернуть указатели на постоянно выделенную память
которая может быть перезаписана соответствующими вызовами.
Ниже следует список примеров (SUSv2)
показывающих строки возвращаемые
dirname
и
basename
для различных путей: