Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Информатика. Лекции. 2009. Измайлов.doc
Скачиваний:
9
Добавлен:
26.10.2018
Размер:
4 Mб
Скачать

14.1.2. Операции с файловыми переменными

Над файловыми переменными возможны только две операции:

  • чтение,

  • запись.

Вид операций, которые можно совершать с файловыми переменными определяется соответствующей спецификацией, указываемой в операторе открытия файловой переменной, in – для чтения, out, appдля записи и дозаписи соответственно.

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

Синтаксис операции ввода:

Имя файловой переменной >> имя переменной;


Например: fr >> a;

Синтаксис операции вывода:

Имя файловой переменной << имя переменной;


Например: fw << a;

Пример программы с использованием внешних файлов.

В ряде чисел а[N] поменять местами минимальное и максимальное число. Предусмотреть внешние файлы для ввода и вывода данных. N=27.

На рис.14.1 приведена блок–схема вычислений, а ниже программа вычислительного процесса.

Рис. 14.1 Блок–схема вычислений

# include <fstream.h>

# define N 27

void main( )

{

float min, max, r, a[N];

short i;

fstream fr, fw;

fr.open(“c:\\EAPU\\vec.txt”,ios::in);

fw.open(“c:\\EAPU\\res.txt”,ios::out);

for (i= 0; i < N; i ++) // Ввод чисел с внешнего файла

fr >> a[i];

fr.close( );

min= max = a[0];

for (i= 1; i < N; i ++)

if (a[i] < min) min = a[i];

else

{

if (a[i] > max) max = a[i];

}

r = min;

min = max;

max = r;

for (i= 0; i < N; i ++) // Вывод чисел во внешний файл

fw << a[i];

fw.close( );

}

Представленная программа не предусматривает вывод информации на экран. Вся она помещается на диск c:\, в папку EAPU, в файл с именем res.txt. В программе предусмотрены две файловые переменные: fr и fw. Переменная fr предназначена для ввода данных с внешнего файла vec.txt, о чем свидетельствует спецификация in в операторе ее открытия, а переменная fw предназначена для вывода информации во внешний файл res.txt, что подтверждается спецификацией out. Внешний файл vec.txt создается заранее пользователем в виде последовательности из 27 чисел, а файл res.txt создается автоматически самой программой.

Если информацию из файла fw необходимо вывести на экран, то cледует добавить директиву # include <conio.h> и после оператора fw.close( ), что записан в конце программы, вставить следующий фрагмент программы:

fw. unsetf (ios::skipws); // Сброс флага skipws для предотвращения

char ch; // пропуска пробелов

fw. open (“c:\\EAPU\\rez.txt”, ios::in);

// Посимвольный вывод информации с внешнего файла на экран

while (! fw.eof( ))

{

fw >> ch;

cout << ch;

}

fw. close( );

getch( );

Этот фрагмент программы показывает порядок перемещения информации с внешнего файла (диска) на экран. Здесь информация перемещается не непосредственно с диска на экран, а через оперативную память посимвольно. Такой порядок объясняется тем, что перемещение информации между периферийными устройствами компьютера (диск – экран) осуществляется только через оперативную память. Поэтому во фрагменте программы предусмотрена переменная символьного типа char ch, для которой резервируется в оперативной памяти однобайтовая ячейка. Эта переменная используется как промежуточное звено в процессе перемещения текстовой информации. В этом случае символ с внешнего файла помещается в эту ячейку, в качестве значения символьной переменной ch, а затем с этой ячейки – на экран. Таким образом, вся информация, символ за символом, поступает с внешнего файла на экран. Процесс этот будет продолжаться до тех пор, пока не обнаружится признак конца файла, что определяется функцией eof( ). Запись заголовка цикла while (! fw.eof( )) следует интерпретировать так: пока не обнаружен конец файла, связанного с файловой переменной fw, продолжать циклическую операцию.