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.

 Смотрите также     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;
 }