Fnsplit
fnsplit
Функция Разделяет полное имя файла на компоненты.
Синтаксис #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.
Смотрите также
Пример:
#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; }