Функция fgetc и макрокоманда getc — КиберПедия 

Типы оградительных сооружений в морском порту: По расположению оградительных сооружений в плане различают волноломы, обе оконечности...

История развития хранилищ для нефти: Первые склады нефти появились в XVII веке. Они представляли собой землянные ямы-амбара глубиной 4…5 м...

Функция fgetc и макрокоманда getc

2019-08-01 169
Функция fgetc и макрокоманда getc 0.00 из 5.00 0 оценок
Заказать работу

Прототипы:

int fgetc(FILE *stream);

int getc(FILE *stream);

Возвращает: символ, расширенный до int без продолжения знака. В случае ошибки или конца файла возвращает EOF (= -1 = 0xFFFF).

Описание. Считывает очередной символ из входного потока и увеличивает указатель текущего положения (СР - current position) на 1. При вводе с клавиатуры (stream=stdin) выполняется после нажатия клавиши Enter. Макрокоманда getc полностью аналогична функции fgetc. В файле stdio.h определена, как

#define getc(f) ((--((f)->level) >= 0)? (unsigned char)(*(f)-->curp++) \:_fgetc (f))

Разберите синтаксис этого макроса!

Хотя getc и fgetc аналогичны, но лучше пользоваться макросом по следующей причине. Чтение из файла происходит блоками по 256b, 512b и т.д. После обработки одного блока в ОЗУ с диска считывается следующий блок. Макрос работает с текущим блоком напрямую, как видно из определения, и обращается к функции fgetc только после обработки этого блока. Функция fgetc также работает с блоком в ОЗУ, но каждое обращение к нему реализуется через вызов функции. Таким образом, использование getc увеличивает скорость за счет увеличения кода. Использование fgetc уменьшает код ценой уменьшения скорости.

Функция fgetchar и макрокоманда getchar

Прототипы:   int fgetchar(void);

int getchar(void);

Возвращает: символ, расширенный до int без продолжения знака. В случае ошибки или конца файла возвращает EOF. Описание. Считывает очередной символ из стандартного входного потока и увеличивает СР на 1. Поток stdin, как и любой открытый файл, имеет буфер с размером по умолчанию 512b. Функция выполняется после нажатия клавиши Enter, после чего вводит 1 символ. Остальные введенные символы остаются в буфере, ожидая своей участи. Макрос getchar аналогичен функции fgetchar.

Функции getch и getche

Прототипы:   int getch(void);

int getche(void);

Возвращают: символ, расширенный до int без продолжения знака.

Описание. Функция getch выводит символ на монитор, getche - не выводит. Функции имеют буфер на два символа: в случае нажатия

клавиши с расширенным кодом туда записывается 0 и scan-код нажатой клавиши. Не ожидают нажатия Enter. Буфер не очищается даже при повторном запуске программы.

Функция kbhit

Прототип: int kbhit(void);

Возвращает: 1, если к моменту вызова функции была нажата, но не обработана какая-нибудь клавиша; 0-в противном случае.

Описание. Функция оставляет коды нажатой клавиши в буфере ввода-вывода с клавиатуры, так что их можно прочитать, например, с помощью getch.

Функция ungetc

Прототип: int ungetc(int d,FILE*stream);

Возвращает: символ d, посланный обратно во входной поток stream, и EOF в случае ошибки.

Описание. Выталкивает символ d обратно во входной поток stream. Вернуть можно только один символ. Следующее чтение из потока вернет символ d. Символ с расширенным кодом вернуть не удастся.

Функция ungetch

Прототип: int ungetch(int d);

Описание. Аналогична ungetc, но выталкивает символ d обратно в буфер клавиатуры.

Функция fgets

Прототип: char *fgets(char *target, int n, FILE * stream); Описание. Вводит из stream не более n символов в строку по адресу target. Ввод заканчивается при встрече символа \n. Возвращает target при успешном вводе и NULL при встрече конца файла или в случае ошибки.

Функция gets

Прототип: char *gets(char *target);

Описание. Вводит из stdin строку по адресу target. Число вводимых символов не ограничено. В остальном похожа на fgets.

Функция cgets

Прототип: char *cgets(char *target);

Описание. Читает строку из консоли. str[0] должно содержать максимальную длину вводимой строки. По окончании str[l] содержит число реально введенных символов. Введенная строка начинается с элемента str[2]. Для перехода на новую строку в формат нужно вставить два символа: \n\r. Возвращает начало введенной строки str[2].

Функция fputs

Прототип: int fputs(const char *s, FILE *stream);

Описание. Записывает строку в поток. Возвращает последний записанный символ.

Функция puts

Прототип: int puts(const char *s);

Описание. Записывает строку в поток stdout. Возвращает последний записанный символ.

Функция cputs

Прототип: int cputs(const char *s);

Описание. Записывает строку в текстовое окно на экране. Возвращает последний напечатанный символ.


Поделиться с друзьями:

Поперечные профили набережных и береговой полосы: На городских территориях берегоукрепление проектируют с учетом технических и экономических требований, но особое значение придают эстетическим...

Архитектура электронного правительства: Единая архитектура – это методологический подход при создании системы управления государства, который строится...

Историки об Елизавете Петровне: Елизавета попала между двумя встречными культурными течениями, воспитывалась среди новых европейских веяний и преданий...

История создания датчика движения: Первый прибор для обнаружения движения был изобретен немецким физиком Генрихом Герцем...



© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!

0.01 с.