CodeNet / Языки программирования / C / C++ / Руководства и справочные материалы по C/C++ / Справочники по функциям / Справочник по функциям C/C++
fnsplit
fnsplit
Функция Разделяет полное имя файла на компоненты. Синтаксис #include <dir.h> 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, и т.д.). Функции fnmerge и fnsplit взаимообратны. Если вы с помощью функции fnsplit разделите на части маршрут доступа path, а затем сольете полученные компоненты с помощью функции fnmerge, то вы снова получите маршрут доступа path. Возвращаемое Функция fnsplit возвращает целое число (составлен- значение ное из 5-ти флагов, описанных в файле dir.h), ко- торое показывает, какие компоненты полного имени файла присутствуют в path; далее перечислены флаги и компоненты, которые они обозначают: EXTENSION - расширение имени файла; FILENAME - имя файла; DIRECTORY - каталог (и возможно подкаталоги); DRIVE - спецификация дисковода (смотрите файл dir.h); WILDCARD - шаблоны (* или?). Переносимость Функция работает только в системе DOS. Смотрите также fnmerge. Пример: #include<string.h> #include<stdio.h> #include <dir.h> 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; }