从Kernighan和Ritchie中删除评论程序

时间:2012-12-18 10:29:36

标签: c kernighan-and-ritchie

这是关于Kernighan和Ritchie的评论删除程序(编号1-23 p 34 ANSI eidtion)。以下是我的解决方案。

http://pastebin.com/Fu9C94fV

该程序适用于大多数C程序,删除注释。但是,在某些带有多个星号( ** /)的注释的程序中,它会带来问题(无法读取)。一个这样的例子是这个:

http://pastebin.com/J8EQrwve

然而,它适用于这个程序,尽管它在开头有类似的评论:

http://pastebin.com/thWKvDS7

那么您认为导致评论删除程序的行为方式是什么?

1 个答案:

答案 0 :(得分:1)

当您在评论状态中点击*时,您会阅读下一个字符以查看它是否为/消耗该字符,因此在下一次迭代时不会检查它。

所以:

/*  **/
    12

*视为1,将*读为2,保持评论模式,continue显示/。鉴于:

/* ***/
   123

*视为2,将*读取为2,继续,然后在3处读取*并找到/跟随并退出评论模式