Поток информации для getint( )

Поток информации для getint( )

     Какой выход должна иметь наша функция? Во-первых, несомненно, что она должна была бы выдавать значение прочитанного числа. Конечно, функция scanf( ) уже делает так. Во-вторых, и это очень существенно, мы собираемся создать такую функцию, которая будет выдавать сообщения о состоянии, т. е. найдено или нет целое число. Чтобы функция была действительно полезной, она должна также сообщать о нахождении ею символа EOF. Тогда мы могли бы использовать функцию getint( ) в цикле while, который читает целые числа до тех пор, пока не обнаружит символ EOF. Короче говоря, нам нужно, чтобы getint( ) возвращала два значения: целое числе и состояние.

     Так как мы хотим иметь два значения, то с одной функцией return с этой задачей нам не справиться. Нам следует иметь два указателя. Однако полное решение задачи мы получим, если используем указатели для выполнения основной работы функции и функцию return для выдачи некоторого кода состояния. Именно это и делает функция scanf( ). Она возвращает количество символов, которые нашла, и символ EOF, если встречает его. Ранее мы не пользовались такой возможностью, но могли бы, если бы применяли вызов вида

status = scanf(" % d", &number);

Теперь будем это делать. Тогда наш вызов функции выглядел бы следующим образом:

status = getint(&number);

Правая часть равенства использует адрес переменной number, чтобы получить ее значение, a returnприменяется для получения значения переменной status.

  

РИС. 10.2. Создание функции getint( )

 Мы должны выбрать коды для выдачи сообщения о состоянии. Так как предполагается, что неописанные функции имеют тип int, наши коды должны состоять из целых чисел. Используем следующие коды для сообщения о состоянии:

-1 означает, что найден символ EOF.

1 означает, что найдена строка, содержащая не цифры.

0 означает, что найдена строка, содержащая только цифры.

     Нашу функцию getint( ) можно представить себе (рис. 10.2) как имеющую один вход и два выхода. На ее вход поступает адрес целой переменной, значение которой считывается. На первом выходе имеем значение считанного целого, полученного через указатель. (Таким образом, аргумент-указатель является двусторонним каналом передачи информации.) На втором выходе получаем код состояния, что обеспечивается функциейreturn. Отсюда следует, что "скелет" нашей функции должен выглядеть примерно так:

getint(ptint)

int *ptint;    /* указатель на целое число */

{

int status;

...

return (status);

}

Замечательно! Теперь мы должны просто заполнить внутренность функции.

Поделитесь на страничке

Следующая глава >

Похожие главы из других книг:

Железный поток

Из книги автора

Железный поток Автор: Александр КуприяновЦифровая видеокамера Mustek DV 12M матрица: CMOS, 5 Мпцифровой зум: 10хвстроенная память: 32 Мбайтразъем для карт памяти SD и MMCдисплей: 2 дюймагабариты: 98x41х74 ммвес: 136 гцена: $180 Камера со свободно вращающимся дисплеем позволяет снимать


Железный поток

Из книги автора

Железный поток Автор: Илья ШпаньковЛистомания Адрес www.listible.comИнтерфейс английскийКириллица не поддерживаетсяПорой с первого взгляда веб-сервис не вызывает интереса, а посмотришь пристальнее и видишь – не так уж он и прост, как показалось вначале. К одному из таких


ЖЕЛЕЗНЫЙ ПОТОК: Железный поток

Из книги автора

ЖЕЛЕЗНЫЙ ПОТОК: Железный поток Автор: Артем ЗахаровЧемпионский характер:Asus P565 Asus решила порадовать всех любителей коммуникаторов, выкатив P565 - быстрейший аппарат среди соплеменников. Превосходство над конкурирующими моделями обеспечивает процессор с частотой 800 МГц.


ЖЕЛЕЗНЫЙ ПОТОК: Железный поток

Из книги автора

ЖЕЛЕЗНЫЙ ПОТОК: Железный поток В результате четырехлетних инвестиций общим размером 1,4 млрд. долларов Hewlett-Packard заимела новую струйную технологию печати, на которую возлагаются весьма смелые надежды. Называется она SPT (Scalable Printing Technology). Инженерам компании удалось


Железный поток

Из книги автора

Железный поток Автор: Артем ЗахаровИз семейства кошачьих:BTC/Emprex 9051H Cheetah Хардкорные геймеры обычно не экономят на своем увлечении. Но для комфортной игры важен не только мощный компьютер с быстрой видеокартой, исправно "выплевывающей" десятки кадров в секунду. Не менее


Железный поток

Из книги автора

Железный поток Автор: Сергей ЛеоновУстройство для считывания с бумажной перфоленты Упрощенный лентопротяжный механизм, удобство заправки кассет и компактная легкая конструкция характеризуют новое устройство для считывания с перфоленты, которое разработано для ввода


1.2. Понятие информации. Общая характеристика процессов сбора, передачи, обработки и накопления информации

Из книги автора

1.2. Понятие информации. Общая характеристика процессов сбора, передачи, обработки и накопления информации Вся жизнь человека так или иначе связана с накоплением и обработкой информации, которую он получает из окружающего мира, используя пять органов чувств – зрение,


1.2. Определение количества информации. Единицы измерения количества информации

Из книги автора

1.2. Определение количества информации. Единицы измерения количества информации Как уже отмечалось, понятие информации можно рассматривать при различных ограничениях, накладываемых на ее свойства, т. е. при различных уровнях рассмотрения. В основном выделяют три уровня


Flow (Поток)

Из книги автора

Flow (Поток) Настройка, которая внешне напоминает Opacity (Непрозрачность). Однако разница есть. Flow (Поток) – это как бы скорость стекания краски с кисти. При уменьшении этого значения мазок становится не только частично прозрачным, но и теряется его


Анализ поправок, принятых Госдумой, к закону «Об информации, информационных технологиях и о защите информации» Сергей Голубицкий

Из книги автора

Анализ поправок, принятых Госдумой, к закону «Об информации, информационных технологиях и о защите информации» Сергей Голубицкий Опубликовано 26 июня 2013 21 июня Государственная Дума РФ приняла сразу во втором и третьем чтении Федеральный Закон «О


Железный поток

Из книги автора

Железный поток Автор: Сергей ЛеоновCanon PowerShot A570 IS/A560: Цифровые фотокамеры Матрица 7,1 мП CCDОбъектив 4х оптический зум (экв. 35-140 мм, f/2,6-5,5)Чувствительность ISO1600 и High ISO AutoДисплей 2,5 дюйма (есть также оптический видоискатель)Тип карт памяти MMC/SD/SDHCКомпания объявила о выпуске


Железный поток

Из книги автора

Железный поток Авторы: Михаил Карпов, Салтыков ПавелSamsung SyncMaster 971P: Такого цвета нет в палитре Pantone Бывают ситуации (и нередко, кстати), когда какой-нибудь рядовой предмет вроде монитора покупается для совместного использования.И ладно бы выбрать по характеристикам