#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::Интернет-Университет Информационных Технологий - дистанционное образование |