1

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

http://pastebin.com/Fu9C94fV

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

http://pastebin.com/J8EQrwve

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

http://pastebin.com/thWKvDS7

那么你认为是什么导致评论删除程序出现这种行为呢?

4

1 回答 1

1

当您点击*处于注释状态时,您会读取下一个字符以查看它是否为/. 这会消耗该字符,因此不会在下一次迭代中检查它。

所以:

/*  **/
    12

看到*at 1,读取*at 2,保持评论模式,然后continues 与/. 然而:

/* ***/
   123

看到*at 2,读取*at 2,继续,然后读取*at 3 并找到/关注并退出评论模式。

于 2012-12-18T10:35:33.800 回答