这是关于Kernighan和Ritchie的评论删除程序(编号1-23 p 34 ANSI eidtion)。以下是我的解决方案。
该程序适用于大多数C程序,删除注释。但是,在某些带有多个星号( ** /)的注释的程序中,它会带来问题(无法读取)。一个这样的例子是这个:
然而,它适用于这个程序,尽管它在开头有类似的评论:
那么您认为导致评论删除程序的行为方式是什么?
答案 0 :(得分:1)
当您在评论状态中点击*
时,您会阅读下一个字符以查看它是否为/
。 消耗该字符,因此在下一次迭代时不会检查它。
所以:
/* **/
12
将*
视为1,将*
读为2,保持评论模式,continue
显示/
。鉴于:
/* ***/
123
将*
视为2,将*
读取为2,继续,然后在3处读取*
并找到/
跟随并退出评论模式