Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
s__ekzamen.docx
Скачиваний:
8
Добавлен:
18.12.2018
Размер:
113.34 Кб
Скачать

53. Установка файлового указателя

Функции-компо ненты seekg и seekp могут сбрасывать значения текущей позиции get и put:

inout.seekg(cp); // установка в cp текущей позиции"put". Варианты seekp и seekg позволяют получить искомые позиции в относительных смещениях:

inout.seekg(5,ios::beg); // перемещение cp на 5 байт от начала

inout.seekg(5,ios::cur); // перемещение cp на 5 байт вперед

inout.seekp(5,ios::end); // перемещение cp на 5 байт до конца

int fseek (stream, offset, origin);

FILE *stream; указатель на структуру FILE.

long offset; число байтов от origin.

int origin; начальная позиция.

Описание:

Функция fseek перемещает указатель, соответствующий потоку stream, на новое место расположения, отстоящее от origin на offset байтов. Следующая операция в потоке выполняется над новым месторасположением.

Если поток открыт для обновления, то следующей операцией будет либо чтение, либо запись.

Аргумент origin может быть одной из следующих констант, определенных в .

ORIGIN ОПРЕДЕЛЕНИЕ (источник, начало)

SEEK-SET начало файла.

SEEK-CUR текущая позиция указателя на файл.

SEEK-END конец файла.

Функция fseek используется для перемещения указателя в любое место файла. Указатель может быть также размещен за концом файла. Однако, попытка расположить указатель до начала файла приведет к ошибке.

Возвращаемое значение:

Функция fseek возвращает значение 0, если указатель успешно перемещен. В случае ошибки возвращается любое ненулевое значение. Для устройств, не совместимых с операцией seek, (таких как терминал и печать), возвращаемое значение неопределено.

/* следущий оператор возвращает указатель на файл к началу

файла */

result = fseek(stream, 0L, SEEK_SET);.

fseek(f1, 10, SEEK_CUR);

Первый параметр функции fseek() – указатель на файловую переменную; второй параметр – число байт, на которое нужно сдвинуть файловый указатель ; третий пара-метр – это место, с которого нужно начинать сдвиг. Он может принимать следующие значения: SEEK_SET – начало файла , SEEK_CUR – текущее положение файлового ука-зателя, SEEK_END – конец файла .

55. Обработка текстовых файлов.

Для описания файловых переменных и работы с файлами используются классы потоков.

Наиболее часто используются классы:

ifstream - для чтения файла,

ofstream - для записи файла,

fstream - для чтения/записи файла.

Эти классы содержат большое число функций работы с файлами.

Пример

ifstream file_in; //Описывается файловая переменная file_in, для чтения из файла

ofstream file_out; //Описывается файловая переменная file_out, для записи в файл

Функция open связывает файловую переменную с конкретным файлом и открывает файл. Функция open содержится в классах ifstream, ofstream, fstream.

При открытии файла Вы указываете, какие операции планируете с ним выполнить:

Режим Описание

ios::app Открыть файл для добавления

ios::ate Открыть файл и установить указатель на его конец

ios::in Открыть файл для чтения

ios::out Открыть файл для записи

ios::bynary Открыть файл в двоичном режиме

ios::trunc Открыть файл и удалить его содержимое, если оно существует

ios::nocreate Если файл существует, операция его открытия завершается отказом

ios::noreplace Если файл существует, то его открытие возможно только в режиме добавления или установки указателя на конец файла

Пример

file_in.open (“s1.txt”, ios::in ); // Открыть файл s1.txt для чтения

file_out.open (“s2.txt”, ios::out | ios::trunc ); // Открыть файл s2.txt для записи,

// удалить его содержимое, если оно было

Файловые переменные являются потоками и используются так же, как и стандартные потоки ввода-вывода (cin, cout).

Примеры

int c;

file_in >> c;

Из файла s1.txt считывается целое число в переменную с.

file_out << ‘’\n\t Результат: \t ’’ << s;

В файл s2.txt записывается текст и переменная s.

Таблица 1.1.1. Функции класса ifstream Функция Описание

get Читает один или несколько символов

getline Читает символьную строку или данные из бинарного файла до определенного ограничителя

read Считывает заданное количество байтов из памяти

eof Возвращает значение истина, когда указатель на конце файла

peek Выдает очередной символ потока

seekg Перемещает указатель в указанную позицию

tellg Возвращает текущее значение позиции указателя

Таблица 1.1.2. Функции класса ofstreamФункция Описание

put Записывает один символ

write Записывает заданное количество байт в файл

seekp Перемещает указатель в указанную позицию

tellp Возвращает текущее значение позиции указателя

Ввод/вывод в поток

Ввод/вывод в поток можно осуществлять различными способами: в виде последовательности байтов, в виде символов и строк или с использованием форматных преобразований. Для каждого вида операций определен свой набор функций.

Операции ввода/вывода выполняются начиная с текущей позиции потока, определяемой положением указателя потока. Указатель устанавливается при открытии на начало или конец файла (в соответствии с режимом открытия) и изменяется автоматически после каждой операции ввода / вывода .

Ниже перечислены основные функции ввода/вывода потока.

Чтение и запись потока байтов выполняют функции fread и fwrite.

Чтение символа из потока - getc, fgetc, из стандартного потока stdin - getchar.

Запись символа в поток - putc, fputc, в стандартный поток stdout - putchar.

Чтение строки из потока - fgets, из стандартного потока stdin - gets.

Запись строки в поток - fputs, в стандартный поток stdout - puts.

Форматированный ввод из потока - fscanf, из стандартного потока stdin - scanf, из строки - sscanf.

Форматированный вывод в поток - fprintf, в стандартный поток stdout - printf, в строку - sprintf.

Закрытие потока

Поток закрывается либо при завершении программы, либо явным образом с помощью функции fclose:

int fclose(FILE*);

Перед закрытием потока информация из связанных с ним буферов выгружается на диск. Рекомендуется явным образом закрывать потоки, открытые для записи.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]