0

Kernighan & Pike の本The Practice of Programminggrep.cファイル ( https://www.cs.princeton.edu/~bwk/tpop.webpage/grep.c ) を調べていました。

^c* 何も含まないファイルで 正規表現を検索する d と、これらがmatch()関数に送信され、関数に ("c*", "d") が送信されmatchhereます。 matchhere('c', "\0", "d") をmatchstar送信し、("\0", "d") をmatchhere関数に送信します。これにより、メインgrep()関数に 1 が返されます

どこで値を間違って取っていますか?

4

1 に答える 1

1

1を返すのが正解です。正規表現は、行の先頭にある^c*0個以上のコピーと一致し、cを含むファイルはd確かにそれに一致します。実際、すべてのファイルのすべての行がそれに一致します。

于 2012-07-24T10:54:44.160 に答える