gpt4 book ai didi

c - ungetc(或来自 K&R 的 ungetch)的目的是什么?

转载 作者:太空狗 更新时间:2023-10-29 16:45:37 27 4
gpt4 key购买 nike

谁能给我解释一下ungetch的用途?这是来自 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 位数字,然后读取加号并知道数字已完成,然后取消加号以便稍后读取。

关于c - ungetc(或来自 K&R 的 ungetch)的目的是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/476615/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com