![](/user_photo/2706_HbeT2.jpg)
- •1.Интерфейс системных вызовов
- •2.Стандартная библиотека ввода/вывода
- •1.2. Системные вызовы и их особенности при работе с файлами.
- •1.2.1. Открытие файла. Системный вызов open().
- •1.2.2. Закрытие файла. Системный вызов close().
- •1.2.3. Чтение и запись из/в файл(а). Системные вызовы read() и write().
- •1.2.4. Создание файла. Системный вызов creat().
- •1.2.5. Создание жесткой ссылки. Системный вызов link().
- •1.2.6. Удаление жесткой ссылки. Системный вызов unlink().
- •1.2.7. Установка указателя в файле. Системный вызов lseek().
- •1.2.8. Дублирование существующего файлового дескриптора. Системный вызов dup().
- •1.2.9. Создание однонаправленного канала. Системный вызов pipe().
- •1.3. Стандартная библиотека ввода/вывода (stdio.H).
- •1.3.1. Особенности работы с stdio.H.
- •1.3.2. Потоки ввода/вывода.
- •1.3.3. Обзор функций библиотеки.
- •1.3.3.1. Функция fopen(). Открытие потока.
- •1.3.3.2. Функция fclose(). Закрытие потока.
- •1.3.3.9. Функции scanf() и fscanf(). Ввод данных с преобразованием формата.
- •2.3. Пример 3. Системный вызов write()
- •2.4. Пример 4. Системный вызов unlink()
- •2.5. Пример 5. Системный вызов lseek()
- •2.6. Пример 6. Stdio.H
1.3.2. Потоки ввода/вывода.
Стандартная библиотека содержит многочисленные функции, использующие собственный механизм буферизации при работе с файлами. Их часто называют функциями потокового ввода/вывода. Такую буферизацию не следует путать с буферизацией, выполняемой операционной системой. Имена всех этих функций начинаются на f - fopen , fclose , fprintf и т. д.
Функции потокового ввода/вывода хорошо описаны во многих учебных пособиях по языку программирования С, поэтому мы приведем лишь краткий обзор, делая акцент на особенностях их применения.
Существуют потоки, соответствующие стандартным устройствам ввода, вывода, вывода сообщений об ошибках, стандартному устройству последовательного ввода/вывода и стандартному устройство печати:
Поток |
Описание |
stdin |
Стандартное устройство ввода; |
stdout |
Стандартное устройство вывода; |
stderr |
Стандартное устройство для вывода сообщений об ошибках; |
stdaux |
Стандартное последовательное устройство ввода/вывода; |
stdprn |
Стандартное печатающее устройство. |
Для использования этих потоков не требуются выполнять процедуру открытия и закрытия.
Для работы со стандартными устройствами ввода/вывода в библиотеках трансляторов языка программирования С имеется соответствующий набор функций, которые должны быть вам хорошо известны - printf, scanf , putchar и т. д.
1.3.3. Обзор функций библиотеки.
Рассмотрим ряд наиболее употребляемых функций стандартной библиотеки ввода/вывода.
Таблица. Наиболее употребительные функции стандартной библиотеки ввода/вывода.
Функция |
Назначение |
fopen() |
Открывает файл с указанным именем и возвращает файловый указатель, ассоциированный с данным файлом. |
fclose() |
Закрывает поток, освобождая буферы. |
fflush() |
Очищает буфер потока, открытого на запись. |
getc() |
Считывает символ из потока. |
putc() |
Записывает символ в поток. |
gets() |
Считывает строку из потока. |
puts() |
Записывает строку в поток. |
fread() |
Считывает указанное число байтов из потока (бинарный ввод). |
fwrite() |
Записывает указанное число байтов в поток (бинарный вывод). |
fseek() |
Позиционирует указатель в потоке. |
printf() |
Производит форматированный вывод. |
scanf() |
Производит форматированный ввод. |
fileno() |
Возвращает файловый дескриптор данного потока. |
1.3.3.1. Функция fopen(). Открытие потока.
Прежде чем читать или записывать информацию в файл, он должен быть открыт и тем самым связан с потоком.
Функция fopen открывает файл с именем path и связывает его с потоком.
Параметр mode указывает на строку, начинающуюся с одной из следующих последовательностей (за ними могут следовать дополнительные символы):
r Открыть текстовый файл для чтения. Чтение начинается с начала файла.
r+ Открыть для чтения и записи. Чтение или запись начинаются с начала файла.
w "Урезать" файл до нулевой длины или создать текстовый файл и открыть его для записи. Запись начинается с начала файла.
w+ Открыть для чтения и записи. Файл создается, если до этого его не существовало, в противном случае он "урезается". Чтение или запись начинаются с начала файла.
A Открыть для дописывания (записи в конец файла). Файл создается, если до этого его не существовало. Запись осуществляется в конец файла.
a+ Открыть для чтения и дописывания (записи в конец файла). Файл создается, если до этого его не существовало. Чтение или запись производятся с конца файла.
При успешном завершении fopen возвращают указатель FILE. Иначе возвращается NULL, а в глобальную переменную errno записывается код ошибки.