Например, если Вы читаете один символ из потока, указатель файла продвигается на 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.Перечисленные функции возвращают дескриптор файла, который используется при последующих операциях с файлом. При вызове одной из функций открытия файла необходимо возвращаемое функцией значение присвоить целочисленной переменной и потом использовать значение этой переменной, чтобы обращаться к открытому файлу.
9.6.2.2. Переопределение дескрипторов (handle)
Когда программа начинает выполняться, пять дескрипторов (handle
), соответствующих стандартным вводу, выводу, выводу сообщений об ошибках, порту и устройству печати, уже назначены. Пользователь может использовать значения этих дескрипторов при вызове функций ввода/вывода нижнего уровня.Каждый из этих дескрипторов соответствует одному из стандартных потоков, значения этих дескрипторов таковы:
поток | значение дескриптора |
stdin | 0 |
stdout | 1 |
stderr | 2 |
stdaux | 3 |
stdprn | 4 |
Можно использовать эти дескрипторы файлов в программе без предварительного открытия этих файлов. Они автоматически открываются при запуске программы.
Так же, как с функциями для потоков, Вы можете использовать перенаправление, чтобы переопределить стандартный ввод и вывод.
Функции dup
и dup2 позволяют назначать несколько handle для одного файла; эти функции обычно используются, чтобы связать дополнительные дескрипторы с уже используемыми файлами.Чтение и запись данных