Информатика: Методические указания к лабораторным работам № 1-5. Функции. Обработка символьных данных. Организация работы с файлами, страница 30

cout << worker1.salary << endl;

infile.close();

}

Функции  write  и  readобычно получают указатель на символьную строку. Символы (char *) представляют собой оператор приведения типов, который информирует компилятор, что вы передаете указатель на другой тип.

Если же вам требуется записать в файл массив, например, из пяти структур  worker,  то оператор записи в файл примет вид:

outfile.write((char *) &worker[0], sizeof(St)*5);

Аналогичные изменения надо внести и в оператор чтения из файла.

Управление открытием файла

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

ifstream outfile("filenamE.txt", ios::app);

В данном случае параметр  ios::app  как раз и указывает режим открытия файла.

Что вам необходимо знать

1.  Заголовочный файл fstream определяет классы ifstream и ofstream, с помощью которых ваша программа может выполнять операции файлового ввода и вывода.

2.  Для открытия файла на ввод или вывод вы должны объявить объект типа  ifstream  или  ofstream,  передавая конструктору этого объекта имя требуемого файла.

3.  После того как ваша программа открыла файл для ввода или вывода, она может читать или писать данные, используя операторы извлечения (>>) и вставки (<<).

4.  Ваши программы могут выполнять ввод или вывод символов в файл или из файла, используя функции  get  и  put.

5.  Ваши программы могут читать из файла целую строку, используя функцию getline.

6.  Большинство программ читают содержимое файла, пока не встретится конец файла. Ваши программы могут определить конец файла с помощью функции  fail  или  eof.

7.  Когда ваши программы выполняют файловые операции, они должны проверять состояние всех операций, чтобы убедиться, что операции выполнены успешно. Для проверки ошибок ваши программы могут использовать функцию  fail.

8.  Если вашим программам необходимо вводить или выводить такие данные, как структуры или массивы, они могут использовать методы  read  и  write.

9.  Если ваша программа завершила работу с файлом, его следует закрыть с помощью функции  close.

Методические указания к решению задач

1.  Для неискаженного ввода текста, набранного кириллицей, с клавиатуры в строку, из строки в файл и из файла вновь в строку необходимо в исходный код программы влючить функцию setlocale(LC_ALL, ".866").

2.  Если операцией «поместить в поток» (<<) вы записали текст в файл кириллицей, то для того чтобы посмотреть его, необходимо открыть этот файл в редакторе Word, установив кодировку символов MS-DOS.

Варианты заданий

Вариант 1

Ввести с клавиатуры шесть строк, слова в которых разделены пробелами. Записать их в текстовый файл. Найти максимальную длину строки в файле и распечатать все строки файла, имеющие такую длину.

Вариант 2

Вычислить значение  i,x,y,если  y = 2sin(x/3)×exxизменяется от p/10  до  p/2  с шагом  Dx= p/10,i– номер шага по  x. Результаты занести в файл данных  rez.txt,  где количество строк равно  i.

Вариант 3

В программе создать файл, каждая строка которого содержит название горной вершины и ее высоту. Используя структуру для описания понятия «вершина», получить название самой высокой вершины, по данным файла.

Вариант 4

Записать в программе текстовый файл из пяти строк. Подсчитать количество строк, которые оканчиваются буквой  ‘s,  и считать их из файла.

Вариант 5

Записать в программе значения  y1,y2  в файл  f1.txt,  а значения  x1, x2 – в файл f2.txt, если y1 = arcsin(t), y2 = arccos(t),  , t изменяется от  –0,5  до  0,5  с шагом  Dt = 0,1.

Вариант 6