Описание функций Си

       

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; }


Содержание раздела