Язык программирования C



         

Низкоуровневый ввод/вывод - операторы READ и WRITE - часть 2


#define cmask 0377 /*for making char's > 0*/ getchar() /*unbuffered single character input*/ { char c; return((read(0,&c,1)>0 ? c & cmask : EOF); }

Переменная "C" должна быть описана как char, потому что функция read принимает указатель на символы. Возвращаемый символ должен быть маскирован числом 0377 для гарантии его положительности; в противном случае знаковый разряд может сделать его значение отрицательным. (константа 0377 подходит для эвм PDP-11, но не обязательно для других машин).

Второй вариант функции getchar осуществляет ввод большими порциями, а выдает символы по одному за обращение.

#define cmask 0377 /*for making char's>0*/ #define bufsize 512 getchar() /*buffered version*/ { static char buf[bufsize]; static char *bufp = buf; static int n = 0; if (n==0) { /*buffer is empty*/ n=read(0,buf,bufsize); bufp = buf; } return((--n>=0) ? *bufp++ & cmask : EOF); }

on_load_lecture()

Дальше »

  Если Вы заметили ошибку - сообщите нам.  

Страницы:

1

|

2

|

3

|

4

|

5

|

6

|

7

|

вопросы | »

|

для печати и PDA

Курсы | Учебные программы | Учебники | Новости | Форум | Помощь



Телефон: +7 (495) 253-9312, 253-9313, факс: +7 (495) 253-9310, email: info@intuit.ru

© 2003-2007, INTUIT.ru::Интернет-Университет Информационных Технологий - дистанционное образование




Содержание  Назад  Вперед