Функция Разделяет полное имя файла на компоненты.
Синтаксис #include
int fnsplit(char * path, char * drive,
char * dir, char * name, char * ext);
Файл, содержащий dir.h
прототип
Описание Функция fnsplit берет в качестве входного аргу-
мента полное имя файла (то есть маршрут доступа
path) в форме :
X:\DIR\SUBDIR\NAME.EXT
и делит его на 4 части, которые запоминает в сим-
вольных строках, адресными указателями которых
являются: drive, dir, name, ext. (Каждый из ком-
понентов может получить значение NULL, что озна-
чает, что данный компонент был выделен, но не
сохранен).
Максимальный размер для данных символьных строк
задается константами MAXDRIVE, MAXDIR, MAXPATH,
MAXNAME, MAXEXT (определяемыми в файле dir.h),
причем каждая длина включает в себя место для по-
зиции нулевого байта.
Константа Максимальная Строка
длина
----------------------------------------------------------------------
MAXPATH (80) path;
MAXDRIVE (3) drive; включая двоеточие (:);
MAXDIR (66) dir; включая лидирующий и
хвостовой знак (\);
MAXFILE (9) name;
MAXEXT (5) ext; включая ведущую точку(.)
----------------------------------------------------------------------
Функция fnsplit подразумевает, что для хранения
каждого компонента достаточно места ( если компо-
нент имеет значение, отличное от NULL).
При расщеплении полного имени файла (маршрута
доступа) на части функция fnsplit воспринимает
символы пунктуации следующим образом:
- компонент drive сохраняет двоеточие, присоеди-
ненное к спецификации дисковода (C:, A: и т.д);
-компонент dir сохраняет ведущие и хвостовые зна-
ки \ (\tc\include\, \source\, и т.д);
-компонент name включает имя файла;
- компонент ext сохраняет точку, предшествующую
расширению имени файла (.c, .exe, и т.д.).
Две вышеописанные функции взаимообратны. Если вы
с помощью функции fnsplit разделите на части мар-
шрут доступа path, а затем сольете полученные
компоненты с помощью функции fnmerge, то вы снова
получите маршрут доступа path.
Возвращаемое Функция fnsplit возвращает целое число (составлен-
значение ное из 5-ти флагов, описанных в файле dir.h), ко-
торое показывает, какие компоненты полного имени
файла присутствуют в path; далее перечислены фла-
ги и компоненты, которые они обозначают:
EXTENSION - расширение имени файла;
FILENAME - имя файла;
DIRECTORY - директория (и возможные поддиректории)
DRIVE - спецификация дисковода (смотрите
файл dir.h);
WILDCARD - шаблоны (* или?).
Переносимость Функция работает только в системе DOS.
Смотрите также fnmerge
Пример:
#include
#include
#include
int main(void)
{
char drive[MAXDRIVE];
char dir[MAXDIR];
char file[MAXFILE];
char ext[MAXEXT];
char *s;
int flag;
s=getenv("COMSPEC");
flag = fnsplit(s,drive,dir,name,ext);
printf("Командный процессор :");
if (flag & DRIVE)
printf("\tдисковод: %s\n",drive);
if (flag & DIRECTORY)
printf("\tдиректория: %s\n",dir);
if (flag & FILENAME)
printf("\tимя: %s\n",name);
if (flag & EXTENSION)
printf("\tрасширение: %s\n",ext);
return 0;
}