Обработка строк
Как известно, современные компьютеры большую часть времени заняты обработкой символьной, а не числовой информации. Предположим, что в текстовом файле записаны данные о собаках, привезённых на выставку: в каждой строчке кличка собаки, её возраст (целое число) и порода, например,
Мухтар 4 немецкая овчарка
Элементы отделяются друг от друга одним пробелом. Нужно вывести в другой файл сведения о собаках, которым меньше 5 лет.
В этой задаче данные можно обрабатывать по одной строке (не нужно загружать все строки в оперативную память):
Здесь, как и раньше, Fin и Fout — файловые переменные, связанные с файлами, открытыми на чтение и запись соответственно.
Будем считать, что все данные корректны, т. е. первый пробел отделяет кличку от возраста, а второй — возраст от породы. Тогда разбор строки можно выполнить так:
найти в строке пробел
удалить из строки кличку с первым пробелом
найти в строке пробел
выделить возраст перед пробелом
преобразовать возраст в числовой вид
Для этого используются стандартные функции для работы с символьными строками (см. § 66):
В результате работы этого фрагмента возраст собаки оказывается в переменной аде. Конечно, при этом исходная строка «портится», поэтому все операции нужно выполнять с её копией. Основной цикл будет выглядеть так:
Следующая страница Вопросы и задания