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

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

чтение,

запись.

Вид операций, которые можно совершать с файловыми переменными определяется соответствующей спецификацией, указываемой в операторе открытия файловой переменной, 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, продолжать циклическую операцию.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: