Главная Случайная страница


Полезное:

Как сделать разговор полезным и приятным Как сделать объемную звезду своими руками Как сделать то, что делать не хочется? Как сделать погремушку Как сделать так чтобы женщины сами знакомились с вами Как сделать идею коммерческой Как сделать хорошую растяжку ног? Как сделать наш разум здоровым? Как сделать, чтобы люди обманывали меньше Вопрос 4. Как сделать так, чтобы вас уважали и ценили? Как сделать лучше себе и другим людям Как сделать свидание интересным?


Категории:

АрхитектураАстрономияБиологияГеографияГеологияИнформатикаИскусствоИсторияКулинарияКультураМаркетингМатематикаМедицинаМенеджментОхрана трудаПравоПроизводствоПсихологияРелигияСоциологияСпортТехникаФизикаФилософияХимияЭкологияЭкономикаЭлектроника






Функции getchar и putchar





Самый простой механизм ввода заключается в чтении по од­ному символу за раз из "стандартного ввода", обычно с терми­нала пользователя, с помощью функции getchar. Функция getchar() при каждом к ней обращении возвращает следующий вводимый символ. В большинстве сред, которые поддерживают

язык "с", терминал может быть заменен некоторым файлом с по­мощью обозначения <: если некоторая программа prog исполь­зует функцию getchar то командная строка

PROG<INFILE

приведет к тому, что PROG будет читать из файла INFILE, а не с терминала. Переключение ввода делается таким образом, что сама программа PROG не замечает изменения

Функция getchar возвращает значение EOF, когда она попа­дает на конец файла, какой бы ввод она при этом не считыва­ла. Стандартная библиотека полагает символическую константу EOF равной -1 (посредством #define в файле stdio.h), но про­верки следует писать в терминах EOF, а не -1, чтобы избежать зависимости от конкретного значения.

Вывод можно осуществлять с помощью функции putchar(c), помещающей символ 'с' в "стандартный ввод", который по умол­чанию является терминалом. Вывод можно направить в некоторый файл с помощью обозначения >: если PROG использует putchar, то командная строка

PROG>OUTFILE

приведет к записи стандартного вывода в файл OUTFILE, а не на терминал.

Вывод, осуществляемый функцией printf, также поступает в стандартный вывод, и обращения к putchar и printf могут пе­ремежаться.

Поразительное количество программ читает только из одно­го входного потока и пишет только в один выходной поток; для таких программ ввод и вывод с помощью функций getchar, putchar и printf может оказаться вполне адекватным и для на­чала определенно достаточным. Это особенно справедливо тогда, когда имеется возможность указания файлов для ввода и вывода и поточный механизм для связи вывода одной программы с вводом другой. Рассмотрим, например, программу LOWER, ко­торая преобразует прописные буквы из своего ввода в строч­ные:

#include <stdio.h>

main() /* convert input to lower case */

{

int c;

while ((c = getchar())!= EOF)

putchar(isupper(c)? tolower(c): c);

}

"Функции" isupper и tolower на самом деле являются макроса­ми, определенными в stdio.h. Макрос isupper проверяет, яв­ляется ли его аргумент буквой из верхнего регистра, и возв­ращает ненулевое значение, если это так, и нуль в противном случае. Макрос tolower преобразует букву из верхнего регист­ра в ту же букву нижнего регистра. Независимо от того, как эти функции реализованы на конкретной машине, их внешнее по­ведение совершенно одинаково, так что использующие их прог­раммы избавлены от знания символьного набора.

Кроме того отметим, что в стандартной библиотеке вво­да/вывода "функции" getchar и putchar на самом деле могут быть макросами. Это позволяет избежать накладных расходов на обращение к функции для обработки каждого символа.

Date: 2015-12-12; view: 454; Нарушение авторских прав; Помощь в написании работы --> СЮДА...



mydocx.ru - 2015-2024 year. (0.005 sec.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав - Пожаловаться на публикацию