5.4. Чтение файлов и запись в файлы
5.4. Чтение файлов и запись в файлы
Предикаты, обсуждавшиеся в этой главе ранее, использовались для ввода (чтения) и вывода (записи) данных при обмене лишь с терминалом, но они могут быть использованы и в более общих ситуациях. В Пролог-системе определяется текущий входной поток данных, из которого производится чтение всех вводимых данных. Все выводимые данные записываются в текущий выходной поток данных. В обычном состоянии текущий входной поток данных поступает с клавиатуры терминала, а текущий выходной поток данных направляется на дисплей терминала. Часто оказывается удобно выполнять операции чтения и записи данных над файлами, которые представляют последовательность литер во вторичной внешней памяти. Конкретный вид этой памяти зависит от используемой ЭВМ, но сейчас файлы обычно хранятся на магнитных дисках. Предполагается, что каждый файл имеет собственное имя(имя файла), используемое для идентификации файла. Для того чтобы содержание этой главы было понятно, читателю следует познакомиться с правилами организации и способом задания имен файлов в той операционной обстановке, в которой он работает. В Прологе имена файлов представляются атомами, но мы не можем исключить возможность каких-либо ограничений на синтаксис имен файлов, накладываемых конкретной обстановкой, в которой работает Пролог-система.
Файлы имеют определенную длину. Это означает, что они содержат определенное количество литер. В конце файла имеется специальный маркер, называемый маркером конца файла. Мы не обсуждали маркер конца файла до сих пор, так как выход на конец файла является более обычным делом для файлов, расположенных во внешней памяти, чем при обмене с терминалом. Если программа производит чтение файла, то маркер конца файла может быть обнаружен и в случае, когда программа читает термы и когда читаются отдельные литеры. Если при выполнении get0(X) встречается конец файла, то X будет конкретизирована некоторой управляющей литерой, обычно имеющей код 26 в таблице кодов ASCII. Если конец файла встречается при выполнении read(X), то X будет конкретизирована некоторым специальным термом, значение которого зависит от конкретной Пролог-системы. При попытке прочитать файл далее маркера конца возникает ошибка.
Имеется встроенный (стандартный) файл, называемый user. Чтение этого файла вызывает ввод данных с клавиатуры терминала, а запись в этот файл приводит к тому, что литеры печатаются на дисплее. Такой режим работы считается стандартным. При вводе с клавиатуры терминала признак конца файла генерируется при вводе управляющей литеры с кодом ASCII 26. Это окажет на выполнение get0 и read такое же воздействие, как если бы встретился конец файла.
Более 800 000 книг и аудиокниг! 📚
Получи 2 месяца Литрес Подписки в подарок и наслаждайся неограниченным чтением
ПОЛУЧИТЬ ПОДАРОКЧитайте также
10.5.2. Чтение и запись из процесса
10.5.2. Чтение и запись из процесса Хотя system() отображает результат работы команды на устройство стандартного вывода и позволяет дочерним программам читать стандартный ввод, это не всегда идеально. Часто процесс желает читать вывод другого процесса либо отправлять текст на
11.2.4. Чтение, запись и перемещение
11.2.4. Чтение, запись и перемещение Хотя есть несколько способов читать и писать файлы, мы обсудим здесь только простейшие из них[42]. Чтение и запись почти идентичны, поэтому рассмотрим их одновременно.#include <unistd.h>size_t read(int fd, void * buf, size_t length);size_t read(int fd, const void * buf, size_t length);Обе
11.2.5. Частичное чтение и запись
11.2.5. Частичное чтение и запись Хотя обе функции — и read(), и write() — принимают параметр, указывающий, сколько байт нужно прочитать или записать, ни одна из них не гарантирует, что обработает указанное количество байт, даже если не случается никаких ошибок. Простейший пример
Чтение и запись
Чтение и запись freadЧитает из открытого файла определенное количество символов.Синтаксис:string fread(int $f, int $numbytes)Читает из файла $f $numbytes символов и возвращает строку этих символов. После чтения указатель файла продвигается к следующему после прочитанного блока позициям. Если
18.3. Чтение и запись
18.3. Чтение и запись Создав маршрутизирующий сокет, процесс может отправлять ядру команды путем записи в этот сокет и считывать из него информацию от ядра. Существует 12 различных команд маршрутизации, 5 из которых могут быть запущены процессом. Они определяются в
19.2. Чтение и запись
19.2. Чтение и запись Все сообщения в сокете управления ключами должны иметь одинаковые заголовки, соответствующие листингу 19.1[1]. Сообщение может сопровождаться различными расширениями в зависимости от наличия дополнительной информации или необходимости ее
Чтение и запись данных
Чтение и запись данных Есть несколько VBA-команд для записи и извлечения данных из файла. В приведенной ниже таблице описана их работа. Пример команды Использование Пояснение Оператор Put Предназначен для записи переменных в файл Put #1, 1800, StrQuote (записывает переменную
13.2. Запись и чтение чисел
13.2. Запись и чтение чисел ПроблемаТребуется записать число в поток в форматированном виде в соответствии с местными соглашениями.РешениеЗакрепите (imbue) текущую локализацию за потоком, в который вы собираетесь писать данные, и запишите в него числа, как это сделано в
12.2. Запись информации в файлы и считывание информации из файлов
12.2. Запись информации в файлы и считывание информации из файлов Постановка задачи Требуется сохранить на диске информацию (например, текст, данные, изображения и
Б.1. Чтение и запись данных
Б.1. Чтение и запись данных Первая функция ввода-вывода, с которой сталкиваются те, кто начинают изучать язык С, называется printf(). Она форматирует текстовую строку и записывает ее в стандартный выходной поток. Обобщенная ее версия fprintf() записывает текст в заданный поток.
Чтение и запись данных
Чтение и запись данных Функции ввода/вывода верхнего уровня позволяют передавать данные различными способами.Операции чтения и записи в потоках начинаются с текущей. позиции в потоке, идентифицируемой как "file pointer"(указатель файла) для потока. Указатель файла изменяется
Чтение и запись данных
Чтение и запись данных Функции read и write, как и функции ввода/вывода верхнего уровня, начинают выполнение очередной операции с текущей позиции в файле. Текущая позиция изменяется при каждой операции чтения или записи.Функция eof может быть использована для проверки на конец
Unix-строки (чтение и запись Unix-файлов)
Unix-строки (чтение и запись Unix-файлов) Данный модуль позволяет читать и записывать файлы формата Unix.unit StreamFile;interfaceUses SysUtils;Procedure AssignStreamFile(var f: text; FileName: String);implementationConst BufferSize = 128;Type TStreamBuffer = Array[1..High(Integer)] of Char; TStreamBufferPointer = ^TStreamBuffer; TStreamFileRecord = Record Case Integer Of 1: ( Filehandle: Integer; Buffer:
Чтение и запись файлов
Чтение и запись файлов Для доступа к файлам предназначены пять различных методов класса CFile: Read, ReadHuge, Write, WriteHuge, Flush. Методы Read и ReadHuge предназначены для чтения данных из предварительно открытого файла. В 16-разрядной операционной системе Windows функция Read может считать не