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

Листинг 8.1



#include <iostream.h>

#include <string.h>

int main()

{

const int len = 81; //1

char word[len], line[len]; //2

setlocale(LC_ALL, "Russian");

cout <<"Введите слово для поиска:"; cin >> word;

ifstream fin("text.txt",ios::in|ios::nocreate); //3

if (!fin)

{

cout <<"Ошибка открытия файла." << endl;

return 1; //4

}

while (fin.getline(line, len)) //5

{

if (strstr(line, word)) //6

{

cout <<"Отсутствует!" <<endl;

}

}

cout << "Отсутствует!" << endl;

return 0; //7

}

Рассмотрим помеченные операторы. В операторе 1 описывается константа, опре­деляющая длину строки файла и длину последовательности. В операторе 2 описывается переменная 1ine для размещения очередной строки файла и переменная «ord для размещения искомой последовательности символов.

В операторе 3 определяется объект fin класса входных потоков if stream. С этим бъектом можно работать так же, как со стандартными объектами cin и cout, то есть использовать операции помещения в поток «и извлечения из потока».

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

ifstream fin("с:\\prim\\cpp\\text.txt", ios::in | ios::nocreate); // 3

В операторе 4 проверяется успешность создания объекта fin. Файлы, открываемые для чтения, проверять нужно обязательно! В операторе 5 организуется цикл чте­ния из файла в переменную. line.

Метод get line, описанный выше, при достиже­нии конца файла вернет значение, завершающее цикл.

Для анализа строки в операторе 6 применяется функция strstrd (line, word). Она выполняет поиск подстроки word в строке line. Обе строки должны завершаться нуль-символами. В случае успешного поиска функция возвращает указатель на найденную подстроку, в случае неудачи - NULL. Если вторым параметром переда­ется указатель на строку нулевой длины, функция возвращает указатель на нача­ло строки line.

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

Даже такую простую программу мы рекомендуем вводить и отлаживать по шагам. Предлагаемая последовательность от­ладки:

1. Ввести «скелет» программы (директивы #include, функцию main(), операторы1-4). Добавить контрольный вывод введенного слова. Запустив программу, проверить ввод слова и успешность открытия файла. Выполнить программу, задав имя несуществующего файла, для проверки вывода сообщения об ошибке. Удалить контрольный вывод слова.

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

cout «line «endl;

Удалить контрольный вывод строки.

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





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



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