2 tkk13 tkk13 于 2016.03.01 10:47 提问

C语言getchar()为什么无法读取ungetch()返回的缓存字符

在看K&R的逆波兰算法,发现里面用getch,把它改成getchar后发现无法读取ungetch返回缓冲区的字符而是直接读取下一个字符了。测试了一下
main()
{
int a,b,c;
a=getchar();
ungetch(a);
putchar(getchar());
while(1);
}
输入23后发现返回的是3.
ungetch返回的不是缓存吗,怎么读取不了呢?

3个回答

hikarisamax
hikarisamax   2016.03.01 11:17

看了这段代码,深深地感觉自己学艺不精

github_27756899
github_27756899   2016.03.02 14:48

main()
{
int a,b,c;
a=getchar(); //a=2;
ungetch(a); //32
putchar(getchar()); //3
putchar(getchar());//2 添加这句可能输出就为2
while(1);
}

github_27756899
github_27756899   2016.03.03 15:44

不好意思,上面回答时没有验证。

图片说明

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.

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!