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

"Строковый ввод-вывод"

Для построчного ввода - вывода используются следующие функции;

  1. char *fgets(char *s, int n, FILE *F), где

char *s - адрес, по которому размещаются считанные байты;

int n - количество считываемых байтов;

FILE *fp - указатель на файл, из которого производится считывание.

Прием символов заканчивается после передачи n байтов или при получении "\n". Управляющий символ "\n" тоже передается в принимающую строку. В любом случае строка заканчивается "\0". При успешном завершении считывания, функция возвращает указатель на прочитанную строку, иначе возвращает NULL.

2) char *fputs(char *s, FILE *F), где

char *s - адрес, из которого берутся записываемые в файл байты;

FILE *fp - указатель на файл, в который производится запись.

Пример:

int MAXLINE=255; //максимальная длина строки

FILE *in, //исходный файл

*out; //принимающий файл

char buf[MAXLINE]; //строка, с помощью которой выполняется копирование

//копирование строк одного файла в другой

while (fgets (buf, MAXLINE, in)!=NULL)

fputs(buf,out);

Таблица 5. Библиотека обработки символов

Прототип

Описание функции

int

isdigit

(int

c)

Возвращает true, если элемент с является цифрой, в противном случае

— false (0)

int

isalpha

(int

c).

Возвращает true, если элемент с является буквой, в противном случае —

false (0)

Таблица 6. Функции преобразования строк

Прототип

Описание функции

double atof (const char *nPtr)

int atoi (const char *nPtr)

long atoi (const char *nPtr)

Преобразует строку nPtr в число типа double Преобразует строку nPtr в число типа int

Преобразует строку nPtr в число типа long int

Использование функции atoi для преобразования строки в число типа int. */

#include <iostream.h>

#include <stdlib.h>

void main() {

int i = atoi("2593");

cout << "The string \"2593\" changes" « " into int = " « i « "\nThis value - 593 = " « i - 593 « endl;

/* это значение — 593 = */

}

/*

Результаты выполнения программы:

The string "2593" changes into int = 2593

This value - 593 = 2000

Press any key to continue

*/

Примеры решения задач

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

Код программы

#include <fstream.h>

#include <string.h>

int main()

{

// дополнительный символ требуется для завершающего нуля

const int len = 81;

// line - для размещения очередной строки файла

// word - для размещения искомой последовательности символов

char word[len], line[len];

/* введите слово для поиска */

cout << "Input a word for the search: ";

cin » word;

/* Учитывая то, что объекты, классы и методы мы будем рассматривать позже, пока просто будем пользоваться этими понятиями.

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

Итак, здесь определяется объект fin класса входных потоков ifstream. С этим объектом можно работать так же, как со стандартными объектами cin и cout, т.е. использовать операции помещения в поток < и извлечения из потока >, а также рассмотренные функции get, getline и др. В данном случае текстовый файл text.txt находится в папке primer на диске D. Не забывайте указывать в своих программах реальный путь к файлу. */

ifstream f in ("d: \\primer\\text. txt", ios::in | ios::nocreate);

/* Здесь проверяется успешность создания объекта fin. Файлы, открываемые для чтения, должны быть проверены. */

if (!fin) ( cout << "The error of the file opening" << endl;

return 1; }

/* Организуется цикл чтения из файла в переменную line. Метод getline при достижении конца файла вернет значение, завершающее цикл. */

while (fin.getline(line,len)) {

/* поиск подстроки в строке */

if (strstr(line,word)) {

cout << "There is this word in this text" << endl;

return 0;}

}

cout « "There is not this word in this text" << endl;

return 0; }

/*

Результаты выполнения программы:

Input a word for the search: nmm

There is this word in this text

Press any key to continue */

Результаты выполнения программы с другими исходными данными:

Input a word for the search: 000

There is not this word in this text

Press any key to continue

Содержимое файла text.txt:

1234;567 890

asdf,ghj 456:567

sdf bnnmm 1111

567 12345678 fghdfghf

2. Нужно написать программу, которая определяет, сколько раз встретилось заданное слово в текстовом файле, длина строки в котором не превышает 80 символов. Текст не содержит переносов слов.

Слово — это последовательность алфавитно-цифровых символов, после которых следует знак пунктуации, разделитель или признак конца строки.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]