Функции построкового ввода-вывода — КиберПедия 

Биохимия спиртового брожения: Основу технологии получения пива составляет спиртовое брожение, - при котором сахар превращается...

Наброски и зарисовки растений, плодов, цветов: Освоить конструктивное построение структуры дерева через зарисовки отдельных деревьев, группы деревьев...

Функции построкового ввода-вывода

2018-01-03 241
Функции построкового ввода-вывода 0.00 из 5.00 0 оценок
Заказать работу

1. char *fgets(char *line,int size, FILE *f); - ввести строку из файла f.

Функция fgets вводит из файла f очередную строку и записывает ее в массив символов line. Второй аргумент size указывает размер массива для записи строки. Максимальная длина строки на единицу меньше, чем size, поскольку всегда в конец считанной строки добавляется завершающий (терминирующий) нулевой символ (нулевой байт). Функция сканирует файл до тех пор, пока не встретит символ перевода строки "\n" или пока число введенных символов не станет равным size - 1. Символ перевода строки "\n" также записывается в массив непосредственно перед терминирующим нулевым байтом. Функция возвращает указатель line в случае успеха или нулевой указатель при ошибке или конце файла.

2. char *fputs(char *line, FILE *f); - записать строку в файл f.

Функция fputs записывает в файл f содержимое строки, адресуемой указателем line. При этом завершающий нулевой символ не записывается.

Функции позиционирования в файле

1. int fseek(FILE *f, long offset, int whence); - установить текущую позицию в файле f

При выполнении файловых операций исполняющая система поддерживает указатель текущей позиции в файле. При чтении или записи n байтов указатель текущей позиции увеличивается на n; таким образом, чтение или запись происходят последовательно. Библиотека ввода-вывода Си позволяет позиционировать указатель текущей позиции в произвольную точку файла. Для этого используется функция fseek. Первый аргумент f функции определяет файл, для которого производится операция позиционирования. Второй аргумент offset задает смещение в байтах, оно может быть как положительным, так и отрицательным. Третий аргумент whence указывает, откуда отсчитывать смещение. Он может принимать одно из трех значений, заданных как целые константы в стандартном заголовочном файле "stdio.h":

· SEEK_CUR - смещение отсчитывается от текущей позиции

· SEEK_SET - смещение отсчитывается от начала файла

· SEEK_END - смещение отсчитывается от конца файла

Например,

fseek(f, 0, SEEK_SET); - устанавливает текущую позицию в начало файла.

fseek(f, -4, SEEK_END); - устанавливает текущую позицию в четырех байтах перед концом файла.

fseek(f, 12, SEEK_CUR); - продвигает текущую позицию на 12 байтов вперед.

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

Функция возвращает нулевое значение в случае успеха и отрицательное значение EOF (равное -1) при неудаче - например, если указанное смещение некорректно при заданной операции или если файл не позволяет выполнять прямое позиционирование.

2. long ftell(FILE *f); - получить текущую позицию в файле f

Узнать текущую позицию относительно начала файла можно с помощью функции ftell. Функция ftell возвращает текущую позицию (неотрицательное значение) в случае успеха или отрицательное значение -1 при неудаче (например, если файл не разрешает прямое позиционирование).

3. int feof(FILE *f); - проверить,достигнут ли конец файла f

Узнать, находится ли текущая позиция в конце файла, можно с помощью функции feof.

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

...

FILE *f;

...

while (!feof(f)) { // цикл пока не конец файла

int c = fgetc(f); // прочесть очередной байт

...

} // конец цикла

Вопросы для повторения

1. Функция открытия файла fopen

2. Функции бинарного чтения и записи fread и fwrite

3. Функция закрытия файла fclose

4. Функции форматного ввода-вывод fscanf и fprintf

5. Функции посимвольного ввода-вывода fgetc и fputc

6. Функции построкового ввода-вывода fgets и fputs

7. Функции позиционирования в файле fseek, ftell и feof

Резюме по теме

В данной теме рассмотрены основные средства языка Си для работы с файлами.

Тема 5.Распределение памяти

Цели и задачи изучения темы

В данной теме рассматриваются основные средства языка Си и приемы выделения и освобождения памяти на этапе выполнения программы.


Поделиться с друзьями:

Архитектура электронного правительства: Единая архитектура – это методологический подход при создании системы управления государства, который строится...

Наброски и зарисовки растений, плодов, цветов: Освоить конструктивное построение структуры дерева через зарисовки отдельных деревьев, группы деревьев...

Археология об основании Рима: Новые раскопки проясняют и такой острый дискуссионный вопрос, как дата самого возникновения Рима...

Таксономические единицы (категории) растений: Каждая система классификации состоит из определённых соподчиненных друг другу...



© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!

0.01 с.