文字功能有问题

时间:2019-10-28 20:50:52

标签: c function

我在创建将输入注册为单词的函数时遇到麻烦。当前它正在注册单词,但是任何带有'(例如,不会,不会)的单词都显示为2个单词。该程序应从文件中获取输入,对单词计数并显示单词计数和每个单词的平均字母数。

我在代码上玩了一段时间,似乎没有什么能解决问题,但是下面的代码是我所得到的最接近正确的代码。

int main(void) {
  int ch, wordCount, wordAverage, letterCount;
  bool inword = false;
  wordCount = 0;
  letterCount = 0;

  while ((ch = getchar()) != EOF) {
    if (isalpha(ch)) {
      letterCount++;

      if (!isspace(ch) && (!inword)) {
        inword = true;
        wordCount++;
      }
    } else
      inword = false;

  }
  wordAverage = letterCount / wordCount;

  printf("The number of words was %d, and the average letters per word was %d.", wordCount, wordAverage);
}

1 个答案:

答案 0 :(得分:2)

您正在使用isalpha

while ((ch = getchar()) != EOF) {
    if (isalpha(ch)) {
      letterCount++;

man page状态isalpha等效于isupper || islower。 试试:

isalpha(ch) || ispunct(ch)