谁能向我解释未 eclipse 刻的目的?
这是从K&R第4章中创建反向波兰计算器的地方。
我已经运行了该程序,没有调用ungetch,在我的测试中,它仍然可以正常工作。
int getch(void) /* get a (possibly pushed back) character */
{
if (bufp > 0)
{
return buf[--bufp];
}
else
{
return getchar();
}
}
void ungetch(int c) /* push character back on input */
{
if (bufp >= BUFSIZE)
{
printf("ungetch: too many characters\n");
}
else
{
buf[bufp++] = c;
}
}
(为了清楚起见,我已经删除了getch中的三元运算符。)
最佳答案
我不知道您所指的具体示例(自从阅读K&R以来已有23年的历史了,那是第一版),但是通常在解析时方便地“窥视”下一个字符以查看是否它是您当前正在解析的一部分。例如,如果您要读取数字,则希望继续读取数字,直到遇到非数字为止。 Ungetc允许数字阅读器在不消耗下一个字符的情况下查看下一个字符,以便其他人可以读取它。在格雷格·休吉尔(Greg Hewgill)的“2 3+”示例中,数字读取器将读取3位数字,然后读取加号并知道数字已完成,然后将加号ungetc取消,以便以后可以读取。
关于c - ungetc(或K&R的ungetch)的用途是什么?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/476615/