初学者提问,关于getch()与ungetch()函数
菜鸟提问,关于getch()与ungetch()函数![size24px]我实在不懂这两个函数的意思。这两个个函数代码出自《R&K》
菜鸟提问,关于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]; 这是定义的缓冲区!
压回字符就是吧字符存入这个数组
这两个函数 可以防止你多读入了个字符,多读的字符压回缓冲区