- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
谁能给我解释一下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/
我到处寻找,但找不到答案!我正在使用 K&R C 书籍中的一个名为 getop 的函数进行练习。当它查看输入中的下一个字符并发现它不是数字时,调用 unget 时该字符将存储在哪里?我可以编译并运行代
我到处寻找,但找不到答案!我正在使用 K&R C 书籍中的一个名为 getop 的函数进行练习。例如,当我输入 123 时,代码会检查输入的每个元素,并在它不是数字时停止。在此示例中为“\n”;它会取
谁能给我解释一下ungetch的用途?这是来自 K&R 第 4 章,您将在其中创建反向波兰计算器。 我在没有调用 ungetch 的情况下运行了该程序,在我的测试中它仍然可以正常工作。 int ge
我在理解以下代码中的几行(注释中标记的数字)时遇到了很大的问题: 首先 - 用输入数据填充数组的循环代码: int n, array[SIZE], getint(int *); for (n = 0;
我是一名优秀的程序员,十分优秀!