Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

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



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

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

Вызов функции fscanf производится с тремя входными аргументами – идентификатором файла, строкой с форматом, числом считываемых в данном формате объектов и одним выходным аргументом, в который записывается результат.

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

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

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

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

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);

Результат работы программы

Family =

Александров

Year =

Status =

учащийся

Group =

MeanMark =

4.5000

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

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

и посмотрите содержимое str. В данном случае вся информация интерпретируется как текстовая и заносится в одну строковую переменную:

str =

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

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

Пример 5. Пусть в файле res.dat хранится следующая информация (необязательно в одну строку):

1.2274 1.4998

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

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

vect = fscanf(F, '%g')

fclose(F);

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





Дата публикования: 2014-12-11; Прочитано: 242 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.007 с)...