|
发表于 2005-8-10 10:03:55
|
显示全部楼层
注意书中代码之前的那段话, 本程序是为了模仿MS-DOS的KBHIT函数. 也就是说
程序提供了一个kbhit, 作用是检测系统有无按键事件.有按键, 则返回1, 无按键 0.
程序中的 readch 函数是能与kbhit 函数正常工作的read函数(需要注意的是原始READ不能与KBHIT联合会工作, 因为KBHIT已经把按键读到 peek_character里了, 而READ本身是不知道的, 这也正是此处 readch 所作的扩展工作).
也就是说, 在主程序中
if(kbhit()) {
ch = readch();
如果有按键, 则读取到 ch 这种逻辑下确是会使得
readch 中
read(0,&ch,1);
return ch;
执行不到.
但是, 一个良好设计的函数是与它所使用的环境相对无关的(耦合度), readch 本身不应强调一定要在kbhit执行后使用, 所以,如果主程序中没有调用kbhit ,直接调用 readch 了, 难道它就不应作一个基本
read 应作的本份的事了吗? |
|