我正在创建一个遵循某些规则的程序,以导致给定文本文件中的单词,音节和句子计数。

句子是一个以whitespace分隔的单词的集合,以a的结尾。或者 !或者 ?但是,这也是一个句子:

Greetings, earthlings..

我处理此程序的方式是使用GetChar()一次扫描文本文件一个字符。我被禁止使用内存中的整个文本文件,它必须一次是一个字符或单词。

这是我的困境:使用getchar()我可以找出当前字符是什么。我只是继续在循环中使用getchar(),直到找到EOF字符为止。但是,如果该句子在最后有多个时期,那么它仍然是一个句子。这意味着我需要知道我正在分析的角色和之后的角色是什么。通过我的思考,这将意味着另一个getchar()呼叫,但是当我在下一个角色中扫描(现在跳过角色)时,这将造成问题。

是否有人建议我如何确定上述句子确实是句子?

谢谢,如果您需要澄清或其他任何东西,请告诉我。

有帮助吗?

解决方案

您只需要实现一个非常简单的 状态机. 。一旦找到了句子的结尾,您就会保持该状态,直到找到新句子的开始(通常这是一个非白色空间字符,例如终结者,例如。或?或?)。

其他提示

您需要一种可扩展的语法。例如,以正则表达方式查看,并尝试构建一个。

通常,人类的语言是多种多样的,也不容易解析,尤其是如果您有口语的演讲来分析或不同的语言。在某些语言中,甚至不清楚单词和句子之间的区别 .

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top