Кент Рейсдорф. BORLAND C++BUILDER. Раздел 1

Кент Рейсдорф. BORLAND C++BUILDER. Страница 50

Листинг 2.4. MAILLIST.CPP


Листинг 2.4. (продолжение)


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

Во-первых, здесь использована функция getline() из класса cin для ввода данных пользователем (см., например, строку 19). Я сделал это из-за того, что оператор » реагирует на пробел не совсем так, как нам нужно. Второй параметр функции getline() определяет максимальное количество символов, помещаемых в буфер (в данном случае буфером является член структуры mailingListRecord). Это число выбирается таким образом, чтобы предотвра­тить выход за границу массивов структуры. Оператор sizeof() используется для определения размера массива, а следовательно, и буфера.

Листинг 2.5. STRUCTUR.H

Функция atoi() в строке 36 также встречается вам впервые. Она прини­мает строку символов и преобразует ее в целое число. Это необходимо для преобразования текста в поле ZIP-кода (который вводится пользователем как строка цифр) в целое число, которое можно сохранить в члене zip структуры mailingListRecord.

Функция displayRecord(), которая начинается со строки 76, имеет два параметра. Первый из них, num, целого типа и содержит номер выводимой записи. Эта переменная используется только для вывода на экран номера записи. В строке 78 я увеличиваю num на 1, чтобы номера на экране на­чинались с 1, а не с 0. Второй параметр функции displayRecord() является экземпляром структуры mailingListRecord. Внутри функции я использую ло­кальную копию передаваемой структуры для вывода ее содержимого на экран.

Обратите внимание, что функция displayRecord() вызывается в цикле for при выводе всех записей (строка 49), а затем снова из основного тела про­граммы для вывода выбранной записи (строка 72). Именно по этой причине для вывода записи была написана отдельная функция. Используя функцию, я избежал ненужного дублирования кода.

Web-дизайн (с) 2010 All rights reserved