Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатика
ИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханика
ОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторика
СоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансы
ХимияЧерчениеЭкологияЭкономикаЭлектроника

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

Читайте также:
  1. III. Правовая охрана нераскрытой информации.
  2. IV. АНАЛИЗ И СБОР ИНФОРМАЦИИ ПО ТЕМЕ
  3. Reading, чтение, — т. е. экстрасенсорное считывание информации.
  4. А) коммуникации - это доведение информации от одного человека до другого или групп людей с целью взаимопонимания, позволяющего повысить качество принимаемых решений;
  5. А. Сбор информации и подготовка.
  6. АВТОМАТИЗАЦИЯ АНАЛИЗА ИНФОРМАЦИИ О ТЕЛЕФОННЫХ СОЕДИНЕНИЯХ
  7. АВТОМАТИЗИРОВАННАЯ ТЕХНОЛОГИЯ ОБРАБОТКИ ИНФОРМАЦИИ

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


Дата добавления: 2015-07-15; просмотров: 65 | Нарушение авторских прав


Читайте в этой же книге: Структуры | Массив структур | Запись строк | Пример 2. |
<== предыдущая страница | следующая страница ==>
Запись данных массивов структур в текстовый файл| Основы теории

mybiblioteka.su - 2015-2024 год. (0.007 сек.)