Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабораторная работа4.doc
Скачиваний:
14
Добавлен:
16.04.2015
Размер:
147.97 Кб
Скачать

Считывание информации из текстового файла

Функция fscanf позволяет последовательно считывать данные, хранящиеся в текстовом файле и записывать их в переменные подходящих типов. Условно можно считать, что fscanf осуществляет обратное действие по отношению к fprintf, а именно, считывание в заданном формате. Содержимое текстового файла составляют такие элементы, как текст и числа. Текст всегда считыва­ется в строковые переменные, а числа можно занести как в строковые, так и числовые переменные. Вызов функции fscanf производится с тремя вход­ными аргументами — идентификатором файла, строкой с форматом и чис­лом считываемых в данном формате объектов и одним выходным аргумен­том, в который записывается результат.

а = fscanf(идентификатор, 'формат', число считываемых элементов)

Для считывания строки предусмотрен формат %s, для целых чисел — %d, а для вещественных — %g. Необходимо следить за соответствием формата и дан­ных, хранящихся в файле. Работу с функцией fscanf проще всего понять на нескольких простых примерах. Пусть, например, в файле studentl.txt, состоя­щем из одной строки, содержится информация о студенте:

Александров 1990 учащийся 201 4.5

Файл-программа, приведенная ниже, записывает 'Александров' в строковую переменную Family, целое число (год) 1990 в переменную Year, 'учащийся1 в строковую переменную status, целое число (номер группы) 201 в Group, вещественное число (средний балл) 4.5 в MeanMark. Считывание сопровождается выводом в командное окно для контроля.

F = fopen(student1.txt', 'r');

Family = fscanf(F, '%s', 1)

Year = fscanf(F, '%d', 1)

Status = fscanf(F, '%s', 1)

Group = fscanf(F, '%s', 1)

MeanMark = fscanf(F, '%g', 1)

fclose(F);

Разобранный выше пример демонстрирует самый простой вариант исполь­зования fscanf — поэлементное считывание, при котором каждый вызов fscanf заносит в переменную соответствующее значение. Если заменить команды в fscanf на одну

str = fscanf (F, '%s', 5)

и посмотрить содержимое str, то можно увидеть, что вся информация интерпре­тируется как текстовая и заносится в одну строковую переменную:

str = Александров1990учащийся2014 .5

Допустимо не указывать число считываемых объектов и вызывать функцию fscanf только с двумя входными аргументами. Если при этом используется формат %s, то все содержимое считается в строковую переменную так же, как показано выше. Числовые форматы %d и %g позволяют записать содер­жимое файла, состоящего из чисел в вектор. Считывание чисел продолжает­ся до тех пор, пока не будет достигнут конец файла или не встретится текст. Пусть, например, в файле res.dat хранится следующая информация (необя­зательно в одну строку):

1.2274 1.4998

-2.0337 (результаты измерений)

Функция fscanf заносит числовые значения в вектор vect, состоящий из трех элементов, и отображает его содержимое в командном окне. Для последующего считывания строки следует применить fscanf с форматом %s.

Пример: считывание чисел в вектор;

F = fopen('res.dat', 'r');

vect = fscanf (F, '%g' )

fclose (F) ;

3.3. Порядок выполнения работы

3.3.1 Написать программу позволяющую выводить семейство кривых, используя оператор for для изменения параметра а(holdon– для вывода в одно окно):

1) y=exp(-a*x);

2) y=a*sin(x);

3) y=exp(-a*x)+sin(x);

4) y= a*cos(x);

5) y=a*sin(x)+10*x;

6) y=a*sin(x)+x2;

7) y=exp(a*x)+sin(x);

8) y=exp(-a*x)*5;

3.3.2 Создать файл – функцию, которая бы позволила соотносить число Х с каким либо заданным интервалом: А<=X<=B. Результатом программы должно быть сообщение о том, в какой диапазон из трех попало число Х. Предусмотреть ограничение на число параметров при вызове функции.

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

3.3.4 Написать программу способную прочитать из файла информацию и вывести ее на экран.