Справочник по функциям С++. Подпрограммы классификации Подпрограммы преобразования
Скачать 3.41 Mb.
|
fnsplit----------------------------------------------------------------- Назначение Расщепляет полное имя файла на компоненты. Синтаксис #include void fnsplit(char *path, char *drive, char *dir, char *name, char *ext); Прототип в dir.h Замечания fnsplit берет полное имя файла в виде строки X:\DIR\SUBDIR\NAME.EXT и расщипляет его на четыре компоненты. Затем сохраняет эти компоненты в строках, указываемых параметрами drive, dir, name и ext. (Каждая компонента обязательна, но может быть и NULL. Это означает, что соответствующая компонента не будет сохранена). Максимальные размеры этих строк задаются конс- тантами MAXDRIVE, MAXDIR, MAXPATH, MAXNAME и MAXEXT (определяются в dir.h), и каждый размер включает место для символа конца строки (\0). Константа (максимум) строка --------- ---------- ------ MAXPATH (80) path; MAXDRIVE (3) drive, включает двоеточие MAXDIR (66) dir, включает ведущий и заключительный слеши (\); MAXFILE (9) name; MAXEXT (5) ext, включает ведущую точку (.) fnsplit предполагает, что имеется достаточно места для сохранения каждой отличной от NULL компоненты. Когда fnsplit расщипляет path, она обрабатывает знаки препинания так: * drive содержит двоеточие (C:, A: и т.д.). * dir содержит ведущий и заключающий обратные слеши (\turboc\include\, \source\, и т.д.). * name содержит имя файла. * ext содержит точку, предшествующую расширению (.C, .exe, и т.д.). fnmerge и fnsplit взаимнообратные функции, если вы разъедините path посредством fnsplit, а за- тем соедините полученные компоненты с помощью fnmerge, то получите опять path. Возвращаемое fnsplit возвращает целое (получаемое из пяти значение флагов, определенных в dir.h), показывающее, какие из компонент полного имени присутствуют в path; эти флаги и компоненты, которые они представляют, следующие: EXTENSION - расширение FILENAME - имя файла DIRECTORY - каталог (и, возможно, подкаталоги) DRIVE - спецификация драйвера(см dir.h) WILDCARD - универсальные сопоставления (* или ?) Переносимость Уникальна для MS-DOS. Смотри также fnmerge Пример Смотри fnmerge ----------------------------------------------------------------- fopen----------------------------------------------------------------- Назначение Открывает поток. Синтаксис #include FILE *fopen(const char *filename, char *type); Прототип в stdio.h Замечания fopen открывает файл с именем filename и возв- ращает укзатель, используемый для идентификации потока в последующих операциях. Тип строки type, используемый при каждом вызо- ве, может принимать одно из следующих значений: r Открыть только для чтения w Создать для записи a Добавление; открыть для записи в ко- нец файла или создать для записи, если файл не существует r+ Открыть существующий файл для изме- нения (запись и чтение) w+ Создать новый файл для изменения a+ Открыть для добавления; открыть (или создать, если файл не существует) для добавления в конец файла. Для задания того, что файл открыт или создан в текстовом режиме, вы можете добавить t к значе- нию type (rt, w+t, и т.д.); аналогично для за- дания двоичного режима вы должны добавить b к значению type (wb, a+b, и т.д.). fopen также допускает менять местами символы b, t и + в строке режима. Например, использование rt+ эк- вивалентно r+t. Если t или b в type не заданы - режим определя- ется значением глобальной переменной _fmode. Если _fmode установлена в O_BINARY, то файлы будут открыты в двоичном режиме. Если _fmode установлена в O_TEXT - файлы будут открыты в текстовом режиме. Эти константы определены в файле fcntl. h. Когда файл открыт для изменения - в результиру- ющий поток может быть произведен как ввод, так и вывод. Однако вывод не может сразу следовать за вводом без запроса fseek или rewind, как и ввод не может сразу следовать за выводом без запроса fseek или rewind, или ввода, который встречает конец файла. Возвращаемое При успешном завершении fopen возвращает значение указатель на вновь открытый поток. В случае ошибки - возвращает NULL. Переносимость fopen доступна в системах UNIX и совместима с ANSI Си. Она определена Керниганом и Ритчи. Смотри также creat, dup, fclose, fdopen, ferror, _fmode (пе- ременная), fread, freopen, open, setbuf, setmode. Пример #include main() { FILE *in, *out; if ((in = fopen("\\AUTOEXEC.BAT", "rt")) == NULL); { fprint(stderr, "Невозможно открыть файл" " ввода.\n"); return(1); } if ((in = fopen("\\AUTOEXEC.BAК", "wt")) == NULL); { fprint(stderr, "Невозможно открыть файл" " вывода.\n"); return(1); } while (!feof(in)) fputs(fgetc(in), out); fclose(in); fclose(out); } ----------------------------------------------------------------- |