【发布时间】:2021-05-23 09:05:17
【问题描述】:
假设我有一个来自stdin 的输入字符串:
(5(4(11(7()())(2()()))()) (8(13()())(4()(1()()))))
鉴于我读过一个字符(,可能有两种可能:
- 一个整数
int d。 (注意d可能包含多个字符。例如上面的13) - 右括号
)
我需要根据每个案例做不同的任务:
- 如果是整数,我需要将其读入
d。 - 如果是
)那么我会做一些计算并丢弃它。
此外,输入中的任何可见字符之间可能存在任意数量的空格或换行符,那么我如何知道下一个可见字符是整数还是)?
【问题讨论】:
-
使用单字符缓冲区并延迟操作
-
@klutt:你能用代码展示一下吗?如果下一个字符是
13并且我使用你说的缓冲区,则整数被分解为1(read) 和3(un-read),我认为这可能会使我的程序复杂化。 -
我认为您可以使用
ungetc函数来执行此操作。将一个字符放回流中。