读书人

初学者提问关于getch()与ungetch()函

发布时间: 2012-09-07 10:38:15 作者: rapoo

菜鸟提问,关于getch()与ungetch()函数!
[size=24px]我实在不懂这两个函数的意思。这两个个函数代码出自《R&K》63页——

C/C++ code
#define BUFSIZE 100char buf[BUFSIZE]; /*用于ungetch函数的缓冲区*/int bufp=0; /* buf中下一个空闲位置*/int getch(void) /*取一个字符(可能是压回的字符)*/{ return (bufp>0) ? buf[--bufp] : getchar ();}void ungetch (int c) /* 把字符压回到输入中*/{ if (bufp>=BUFSIZE)   printf (“ungetch: too many char characters\n)"); else    buf[bufp++]=c;}

问题一: 什么压来压去的?请通俗解释。
问题二:关于这两个函数的用途,书上说是用来检测输入是否足够的。不明白,也请通俗解释。
问题三:我认为这两个函数就是接力赛,例如输入123,输入了2才会保存1到数组,输入3才会保存2到数组,3……语无伦次了。
恳请高手解答![/size]

[解决办法]
ungetch ( int ch )把字符ch放回到这个输入/输车设备中并且如果索引位置不是零的话,减一。

这个函数正常地被调用就是“撤销”getch()操作。

返回ch,或者如果发生错误,返回-1。

[解决办法]
注意:
char buf[BUFSIZE]; 这是定义的缓冲区!
压回字符就是吧字符存入这个数组

这两个函数 可以防止你多读入了个字符,多读的字符压回缓冲区

读书人网 >C语言

热点推荐