#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
我不知道我做错了什么。任何建议将不胜感激。
您有多个问题。
count_sentences
函数嵌套在 main
中。不要这样做。某些编译器可能允许它作为特定扩展,但在您学习生涯的现阶段没有必要依赖这些。int count_sentences(string text);
之后的块始终被执行。这意味着 return
使您的打印无法访问。count_sentences
时尚未致电
printf
。即使您这样做,您也必须提供一个 string
(char *
的别名)参数才能使其成为正确的调用。