问题描述
- C语言getchar()为什么无法读取ungetch()返回的缓存字符
-
在看K&R的逆波兰算法,发现里面用getch,把它改成getchar后发现无法读取ungetch返回缓冲区的字符而是直接读取下一个字符了。测试了一下
main()
{
int a,b,c;
a=getchar();
ungetch(a);
putchar(getchar());
while(1);
}
输入23后发现返回的是3.
ungetch返回的不是缓存吗,怎么读取不了呢?
解决方案
看了这段代码,深深地感觉自己学艺不精
解决方案二:
main()
{
int a,b,c;
a=getchar(); //a=2;
ungetch(a); //32
putchar(getchar()); //3
putchar(getchar());//2 添加这句可能输出就为2
while(1);
}
解决方案三:
不好意思,上面回答时没有验证。
Relative link 参考网页
Description
_ungetch function puts the character c back into keyboard buffer, so that c will be the next character read by _getch or _getche. _ungetch can be called only once before the next read.
时间: 2025-01-26 22:55:07