如何用C计算给定文本中的句子数?

问题描述 投票:0回答:1
#include <cs50.h>
#include <ctype.h>
#include <math.h>
#include <stdio.h>
#include <string.h>

int count_sentences(string text);

int main(void)
{
    string text = get_string("Text: ");
    int count_sentences(string text);
    {
         int sentences = 1;
         for (int j = 0; j < strlen(text); j++)
         {
              if (text[j] == '.' || text[j] == '?' || text[j] == '!')
              {
                 sentences++;
              }
         }
         return sentences;
    }
    printf("Sentences: %i\n", count_sentences);
}

我正在通过 edx 学习 cs50 课程。我在第二周遇到了一个问题,要求我们编写一个程序来为用户给定的文本分配阅读等级。我已经弄清楚如何计算问题的字母和单词部分。然而,句子计数部分让我很困难。上面是我在最终代码中实现它之前起草的测试片段,以确保它按照我想要的方式运行。当我尝试编写代码时,它给了我这个错误:

test.c:24:31: error: format specifies type 'int' but the argument has type 'int (*)(string)' (aka 'int (*)(char *)') [-Werror,-Wformat]
   24 |     printf("Sentences: %i\n", count_sentences);
      |                        ~~     ^~~~~~~~~~~~~~~
1 error generated.
make: *** [<builtin>: test] Error 1

我不知道我做错了什么。任何建议将不胜感激。

c cs50
1个回答
0
投票

您有多个问题。

  • 您正在尝试将
    count_sentences
    函数嵌套在
    main
    中。不要这样做。某些编译器可能允许它作为特定扩展,但在您学习生涯的现阶段没有必要依赖这些。
  • 您只是因为分号而声明了该函数。
    int count_sentences(string text);
    之后的块始终被执行。这意味着
    return
    使您的打印无法访问。
  • 您在致电 count_sentences 时尚未
    致电
    printf
    。即使您这样做,您也必须提供一个
    string
    char *
    的别名)参数才能使其成为正确的调用。
© www.soinside.com 2019 - 2024. All rights reserved.