0

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

句子是由以 . 结尾的空格分隔的单词的集合。或者 !或者 ?不过,这也是一句话:

Greetings, earthlings..

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

这是我的困境:使用 getchar() 我可以找出当前字符是什么。我只是在循环中继续使用 getchar() 直到找到 EOF 字符。但是,如果句子末尾有多个句号,它仍然是一个句子。这意味着我需要知道我正在分析的那个之前的最后一个字符是什么,以及它之后的那个。根据我的想法,这将意味着另一个 getchar() 调用,但是当我去扫描下一个字符时会产生问题(它现在跳过了一个字符)。

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

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

4

2 回答 2

4

您只需要实现一个非常简单的状态机。一旦你找到了一个句子的结尾,你就会一直保持这种状态,直到找到一个新句子的开头(通常这将是一个非空白字符,而不是终止符,例如 . ! 或 ?)。

于 2010-02-05T13:51:48.823 回答
0

你需要一个可扩展的语法。以正则表达式为例,并尝试构建一个。

一般来说,人类语言是多种多样的,不容易解析,特别是如果你有口语要分析或不同的语言。在某些语言中,甚至可能不清楚单词和句子之间的区别是什么

于 2010-02-05T13:52:39.250 回答