50194

Работа с текстовыми файлами

Лабораторная работа

Информатика, кибернетика и программирование

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

Русский

2014-01-17

55.5 KB

3 чел.

Лабораторная Работа № 18

Тема: Работа с текстовыми файлами.

Цель: Приобрести практические навыки в проектировании структуры файла, а также закрепить навыки по вводу данных в текстовый файл и их обработке.

Теоретические сведения:

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

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

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

FILE *file_pointer;

Для использования файловой структуры и функций по операциям с файлами необходимо подключить stdio.h.

Связь между программой и файлом устанавливается при помощи функции fopen() следующим образом:

pointer=fopen(“FILENAME”,”mode”);

где  pointer – указатель на файл;

      fopen – имя функции;

      FILENAME – имя файла на диске;

      mode – режим доступа к файлу.

В файле stdio.h определены следующие функции (смотри таблицу 1):

Таблица 1.

Функции

Действие функции

fopen()

fclose()

putc() или fputc()

getc() или fgetc()

fputs()

fgets()

fseek()

fprintf()

fscanf()

feof()

ferror()

rewind()

remow()

Открыть файл

Закрыть файл

Записать символ в поток

Прочитать символ из потока

Построчная запись в поток

Построчное чтение данных из потока

Изменить указатель позиции файла на указанное место

Форматная запись в файл

Форматное чтение из файла

Возвращает значение «истинно», если достигнут конец файла

Возвращает значение «ложно», если обнаружена ошибка

Устанавливает указатель позиции файла на начало

Уничтожает файл

Возможные режимы открытия файлов перечислены ниже (смотри таблицу 2):

Таблица 2.

 

Режим

Действие

“r”

“w”

“a”

“rt”

“wt”

“at”

“r+t”

“w+t”

“a+t”

Открыть для чтения

Создать для записи

Открыть для добавления в существующий файл

Открыть текстовый файл для чтения

Создать текстовый файл для записи

Открыть текстовый файл для добавления

Открыть текстовый файл для чтения и записи

Создать текстовый файл для чтения и записи

Открыть текстовый файл для добавления или создать для чтения и записи

Посимвольная передача данных является самой основной формой файловых операций, хотя и не принадлежит к числу широко распространенных на практике способов обращения с информацией.

Функции, работающие с символами и строками, предназначены только для чтения и записи текста. Причем, функции осуществляющие посимвольное чтение, будут вводить по одному символу, даже если изначально в файл была записана строка с помощью fputs(). Аналогично, функции, предназначенные для построчного чтения из файла, будут вводить данные целыми строками, даже если информация в файл была записана посимвольно.

Пример: Посимвольная запись  и чтение данных в файл и из файла.

#include<stdio.h>

void main()

{

FILE *fp;

char letter;

if((fp = fopen(“myfile”,”w”))==NULL)

    { puts(“Невозможно открыть файл”);

       exit();

     }

// Чтение символа с клавиатуры и запись в файл

do 

     {letter=getchar(); // ввод последовательности символов

      fputc(letter,fp); // символы записываются в файл

      }

while(letter !=’\r’);

fclose(fp);

// Чтение данных из файла и вывод их на экран

if((fp = fopen(“myfile”,”к”))==NULL)

    { puts(“Невозможно открыть файл”);

       exit();

     }

while((letter =fgetc(fp))!= EOF) //  посимвольное чтение из файла

     printf(“%c”,letter);

fclose(fp);

}

Задание:  Выполнить программу обработки символьных данных в соответствии с вариантом, указанном в таблице 3.

Вариант

Условия задачи

1

Проверить, имеются ли в заданном тексте баланс открывающих и закрывающих скобок.

2

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

3

Отредактировать предложение, удаляя из него лишние пробелы, оставляя только по одному пробелу между словами.

4

В заданном предложении указать слово, в котором доля гласных (A, E,O,I) максимальна.

5

Для каждого слова заданного предложения указать долю согласных. Определить слово, в котором доля согласных максимальна.

6

Найти самое длинное симметричное слово заданного предложения, например АККА.

7

Для каждого символа заданного текста указать, сколько раз он встречается в тексте. Сообщение об одном символе должно печататься не более одного раза.

8

Отредактировать заданное предложение, заменяя многоточия точкой.

9

В заданном предложении найти самое короткое и самое длинное слово.

10

Из заданного текста выбрать и напечатать только те символы, которые встречаются в нем только один раз (в том порядке, в котором они встречаются в тексте).

11

В заданном тексте заменить последовательность символов X(I) на A(I) и подсчитать число произведенных замен.

12

В заданном тексте удалить символ «,» и подсчитать число удаленных символов.

13

Из текста выбрать числа и записать в массив N. Количество чисел не более 10.

14

Удалить из текста символы «пробел» и подсчитать длину сформированного текста.

15

В тексте предложения заменить символ «пробел» на символ «,». Конечные символы удалить, не заменяя на запятые. Определить длину предложения. Если в тексте встречается несколько символов «пробел» подряд, то вместо них поставить одну запятую.

Контрольные вопросы:

  1.  Что такое файловый буфер?
  2.  Чем отличается файл от массива?
  3.  Как используется файловая структура?
  4.  Как вы будете выводить числовые данные?
  5.  Как осуществляется чтение и запись файла?
  6.  Назовите режимы работы с файлами.
  7.  Для чего служит функция sizeof()?

Содержание отчета:

  1.  Краткие теоретические сведения.
  2.  Схемы алгоритмов.
  3.  Тексты составленных программ.
  4.  Протоколы к составленным программам.
  5.  Вывод о проделанной работе.


 

А также другие работы, которые могут Вас заинтересовать

68524. Общее понятие ценности. Ценность и истина. Проблема ценности в истории философии 109 KB
  Отличие человека от других живых существ можно определять по многим признакам: прямоходящее существо обладающее сознанием; способное к чувству стыда; владеющее членораздельной речью; использующее символы; производящее орудия и т. Это и означает что человеческие действия всегда ориентированы на ценности.
68525. Философия в контексте культуры 351.5 KB
  Для одного человека это способ выразить себя. Мировоззрение это совокупность общих представлений человека о своем месте в мире и вытекающих из этого жизненных принципов и целей. Специфика философских проблем состоит в том что конкретные моменты взаимодействия человека с миром рассматриваются...
68530. ЭМОЦИОНАЛЬНЫЙ ИНТЕЛЛЕКТ В СТРУКТУРЕ ЛИЧНОСТИ КУРСАНТОВ УЧРЕЖДЕНИЯ ВЫСШЕГО ВОЕННОГО ОБРАЗОВАНИЯ 115 KB
  В структуру эмоционального интеллекта авторы включают следующие компоненты: оценку и выражение эмоций собственных вербальное или невербальное; других людей невербальное восприятие или эмпатия; регуляцию эмоций собственных других людей; использование эмоций гибкое планирование...
68531. Бухгалтерский учет финансовых результатов на ООО «БУЛГАРНЕФТЕПРОДУКТ» 637.78 KB
  Прибыль - показатель эффективности работы предприятия, источник её жизнедеятельности. Рост прибыли создает финансовую основу для самофинансирования деятельности предприятия, осуществление расширенного воспроизводства и удовлетворения растущих социальных и материальных потребностей трудовых коллективов.
68532. ПОТРЕБНОСТЬ В САМОПОЗНАНИИ И ЛИЧНОСТНЫЕ ХАРАКТЕРИСТИКИ СТУДЕНТОВ ВУЗОВ 79.5 KB
  Анализ процентного соотношения испытуемых по двум кластерам позволяет утверждать что студенты из первой группы в большей степени направлены на самопознание чем из второй. Для проверки выдвинутого нами предположения две полученные в результате кластерного анализа группы группа...