Функции fcloseи fcloseallзакрывают поток или потоки. Функция fcloseзакрывает один заданный поток, fcloseall— все потоки, кроме потоков stdin, stdout, stderr, stdaux, stdprn.
Если программа не выполняет закрытия потоков, потоки автоматически закрываются, когда программа завершается неаварийно. Однако следует закрывать потоки по завершении работы с ними, так как число потоков, которые могут быть открыты одновременно, ограничено.
Функции ввода/вывода верхнего уровня позволяют передавать данные различными способами.
Операции чтения и записи в потоках начинаются с текущей. позиции в потоке, идентифицируемой как "file pointer"
(указатель файла) для потока. Указатель файла изменяется после выполнения операции чтения или записи.
Например, если Вы читаете один символ из потока, указатель файла продвигается на 1 байт, так что следующая операция начнется с первого несчитанного символа. Если поток открыт для добавления, указатель файла автоматически позиционируется на конец файла перед каждой операцией записи.
Поток, связанный с таким устройством, как консольный терминал, не имеет указателя файла. Программы, которые перемещают указатель файла (с помощью функции fseek), будут иметь в этом случае неопределенный результат.
Когда происходит ошибка в операции с потоком, устанавливается в ненулевое значение флажок ошибки для потока. Можно использовать макроопределение ferror, чтобы определить, произошла ли ошибка.
После каждой ошибки флажок ошибки остается установленным до тех пор, пока не будет сброшен вызовом функции clearerrили rewind.
Функции вода/вывода нижнего уровня
Функция |
Краткое описание |
close |
закрыть файл |
creat |
создать файл |
dup |
создать второй дескриптор (handle) для файла |
dup2 |
переназначить дескриптор (handle) для файла |
eof |
проверка на конец файла |
lseek |
позиционирование указателя файла в заданное место |
open |
открыть файл |
read |
читать данные из файла |
sopen |
открыть файл в режиме разделения |
tell |
получить текущую позицию указателя файла |
write |
записать данные в файл |
Система программирования ТС предоставляет дополнительно следующие функции:
Функция |
Краткое описание |
_creat |
создать файл |
creatnew |
создать новый файл |
creattemp |
создать новый файл |
_ореn |
открыть файл |
_read |
чтение данных из файла |
_write |
запись данных в файл |
Нижний уровень ввода и вывода не работает с буферизованными или форматированными данными. Для работы с файлами, открытыми посредством функции нижнего уровня, используется дескриптор файла ( handle).
Для открытия файлов используются функции openи _ ореn; В ОС MS/DOC версии 3.0 или выше может быть использована функция sopenдля открытия файлов с атрибутами режима разделения файла.
функции нижнего уровня, в отличие от функций верхнего уровня, не требуют включения файла stdio.h. Тем не менее нескольких общих констант, определенных в файле stdio.h, как, например, признак конца файла EOF, могут оказаться полезными. Если программа использует эти константы, необходимо включить файл stdio.h.
Прототипы функций нижнего уровня содержатся в файле io.h.
Файл должен быть открыт функциями open, sopenили creatдо выполнения первой операции ввода или вывода с использованием функций нижнего уровня для этого файла.
Файл может быть открыт для чтения, записи, или для чтения и записи, может быть открыт в текстовом или в двоичном режиме.
Файл fcntl.hдолжен быть включен при открытии файла, так как содержит определения для флагов, используемых в функции open. В некоторых случаях также должны быть включены файлы sys\types.hи sys\stat.h.
Перечисленные функции возвращают дескриптор файла, который используется при последующих операциях с файлом. При вызове одной из функций открытия файла необходимо возвращаемое функцией значение присвоить целочисленной переменной и потом использовать значение этой переменной, чтобы обращаться к открытому файлу.
Читать дальше