ВУЗ:
Составители:
Лабораторная работа 6
ФАЙЛЫ С ПОСЛЕДОВАТЕЛЬНЫМ И ПРЯМЫМ ДОСТУПОМ
Цель работы: Получение навыков в организации файлов на внешних носителях и использование их для
обработки информации.
ЗАДАНИЕ
1 Организовать ввод данных с клавиатуры и запись их в файл(ы) с прямым доступом.
2 Прочитать данные из файла(ов), произвести необходимые вычисления и результаты записать в файл с
последовательным доступом.
3 Вывести результаты работы программы на экран, прочитав файл результатов.
МЕТОДИЧЕСКИЕ УКАЗАНИЯ
Язык (Турбо) СИ не содержит средств поддержки ввода/вывода. Каждая реализация СИ должна сопрово-
ждаться библиотечными и макро, обслуживающими ввод/вывод. По мере развития СИ функции ввода/вывода
становились стандартизированными. Такая стандартизация обеспечила высокий уровень мобильности про-
граммы на СИ.
Термин поток происходит из представления о последовательной структуре информационных записей [3].
Состав потока задается структурой FILE, описание которой задается в файле stdio.h.
Символ EOF определяется следующим образом:
#define EOF(-1)
Этот символ в операциях ввода/вывода служит для обозначения и проверки конца файла.
Функция fopen используется для открытия потока (файла). Интерфейс с функцией fopen описывается сле-
дующим образом:
FILE fopen(char filename, char type);
В качестве первого параметра функции должно передаваться правильное имя файла.
Второй параметр определяет тип открываемого файла.
Допустимы следующие типы файлов:
"r" Открыть уже существующий файл на ввод/
"w" Создать новый файл или очистить уже существующий файл и открыть его на вывод.
"a" Создать новый файл для вывода или осуществить вывод в конец уже существующего файла.
"r+" Открыть существующий файл для обновления, которое будет проводиться с начала файла.
"w+" Создать новый или открыть существующий файл для обновления его содержимого.
"a+" Создать новый файл или подстроиться в конец существующего файла для обновления его содержимо-
го.
Функция flclose выглядит следующим образом:
int fclose (FILE *stream);
С помощью этой функции файл закрывается.
Функция fseek описывается следующим образом:
int fseek (FILE *stream, long offset, int wherefrom);
Эта функция служит для произвольного доступа к байтам, обычно внутри двоичных потоков.
Первый аргумент задает поток, к которому должен осуществляться прямой доступ.
Второй аргумент указывает число байт смещения от точки, определяемой третьим параметром функции.
Третий параметр указывает точку, от которой следует начинать отсчет смещения, заданного вторым аргу-
ментом.
Значение 0 – смещение от начала файла.
Значение 1 – смещение от текущей позиции файла.
Значение 2 – смещение от конца файла.
Пример:
#include<stdio.h>
#include<conio.h>
FILE *fff;
FILE *rrr;
FILE *ttt;
main()
{
int mas1[]={1,-2,3};
int mas2[]={-1,2,-3};
int i, buf;
fff=fopen("pol","w+");
rrr=fopen("otr","w+");
ttt=fopen("rez","w");
clrscr();
for(i=0;i<3;i++)
{
fwrite(&mas1[i],1,sizeof(int),fff);
Страницы
- « первая
- ‹ предыдущая
- …
- 21
- 22
- 23
- 24
- 25
- …
- следующая ›
- последняя »