Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Учебное пособие 300070.doc
Скачиваний:
6
Добавлен:
30.04.2022
Размер:
295.42 Кб
Скачать

4. Лабораторная работа № 4

Тема. Обработка текстовой информации.

Цель. Закрепить правила конструирования строк, основные действия над строками, получить практические навыки решения задач обработки текстов.

Содержание работы

1. Изучить правила конструирования строк.

2. Изучить стандартные функции работы со строками.

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

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

1.Работа с текстом

Обработка текста – это пример задачи из нечисловой предметной области. Обработка текста сводится к решению двух основных подзадач:

а) поиск в некоторой заданной последовательности слов или символов другой заданной последовательности слов или символов. При этом результатом поиска является не только вхождение одной последовательности в другую, но и позиция вхождения.

б) редактирование последовательности слов или символов, т.е. замена одной подпоследовательности на другую, включение в текст новой подпоследовательности, удаление из текста некоторой подпоследовательности.

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

2.Строковый тип

Значением «строкового» типа является последовательность символов (слово строковый заключено в кавычки, так как в Си явно такой тип не определен и, говоря о строковом типе, мы имеем в виду тип данных, обладающий свойствами строкового типа). «Строковый» тип (или просто строка) в Си рассматривается как подмножество типа массив. Строка задается одномерным массивом, элементы которого символы, последний символ массива – ‘\0’. Эта «нуль-литера», кодируемая нулевым байтом, является признаком конца строки. Литера ‘\0’ также как другие символы входит в строку. Размер строки (количество символов) определяется решаемой задачей и ограничивается доступным объемом памяти. Таким образом, строку можно задать:

char str[10];

char word[ ] = {‘a’,’b’,’c’,’d’,’\0’};

char stroka[ ] = “ABCDEF”;

В первом примере определен массив из 10 элементов типа char. Чтобы использовать такой массив как строку надо позаботиться о том, чтобы при задании значений элементам этого массива один из элементов получил значение символа ‘\0’.

Например:

scanf (“%c”, ch); I=0;

while (ch != ‘,’) {str[I++] = ch; scanf (“%c”, ch);}

str[I] = ‘\0’;

или

for (i = 0; ((ch = getchar( )) != ‘,’); ++i ) str[ i ] = ch ;

str[ i ] = ‘\0’;

Стандартная функция getchar из библиотеки stdio.h читает очередную литеру из входного текстового потока и возвращает ее в качестве результата.

Читая последовательность символов, помещаем очередной символ в массив str, пока не введем символ ‘,’. После ввода символа ‘,’ и выхода из цикла добавляем к символам в массиве str символ ‘\0’- признак конца строки. Максимальная длина последовательности символов в строке str – 9 символов (10-й символ это ‘\0’).

Во втором примере определен и инициирован массив word из пяти символов, последним из которых является признак конца строки.

В третьем примере определен и инициирован массив stroka из 7 символов, последним из которых также является символ ‘\0’, так как массив инициирован строковой константой “ABCDEF” (символ ‘\0’ всегда завершает строковую константу). Количество элементов в массиве (во втором и третьем примерах) определяет компилятор по числу начальных значений в списке инициализации.

Так как строковый тип – это особый массив, то для строки сохраняются все свойства регулярного типа (т.е. над отдельными элементами можно выполнять операции, допустимые для базового типа). С «нуль-литерой» можно работать как и с остальными символами (не забывая о ее основном назначении).

Кроме этого, для строк определен набор стандартных функций, приведенный в табл. 1. Функции работы со строками находятся в библиотеке string.h.