【问题标题】:Wordcounting program in CC中的字数统计程序
【发布时间】:2014-05-02 03:57:41
【问题描述】:

所以我正在尝试编写一个计算文本文件中字数的程序。

main(void){
    int wordcount = 0;
    FILE *infile = fopen("Text.txt", "r");
    wordcount += word_count(infile);
    printf("%d", wordcount);
    return 0;

    }

int word_count()
{
    int wordcount(FILE *infile);
    int count;
    char it;
    while ((it  = fgets(infile)!=EOF))
    {
        if (it =='\n')
        {
            count++
        }
    }
    return count;
}

但是当我运行它时,我得到了这些错误:

infile undeclared identifier
fgets too few aruguments for function call

我做错了什么?

【问题讨论】:

  • fgets 接受三个参数
  • 好的!谢谢!我该如何解决?
  • 1.word_count 函数不接受任何参数。使用word_count(FILE *infile) { 2。fgets 需要 3 个参数。阅读人fgets
  • 在主函数内部,您将参数传递给word_count(infile),但在定义该函数时没有传递任何参数。为什么?
  • 当您发布需要帮助解决非常简单的编译器错误的问题时,几乎没有动力提供积极的反馈。请拿一本教科书,花点时间学习基础知识。

标签: c


【解决方案1】:

首先是片段:

int word_count()
{
    int wordcount(FILE *infile);

应该是:

int word_count(FILE *infile) {

其次,fgets() 接受 三个 参数,即缓冲区地址、最大大小和文件句柄。

第三,如果fgets() 得到了什么,它会返回一个指向缓冲区的指针,而不是一个字符。如果您想处理字符,则应改为查看 fgetc

第四,检测\n 字符是计算行数 的好方法,但没有单词。而且您可能希望将没有换行符的最后一行检测为另一行(取决于您的需要)。

如果要统计单词,则需要检测单词和非单词之间的转换。

第五,您应该将字数统计功能移至main 上方,或者在main 上方为其提供原型。就像现在一样,它没有被声明,所以你没有类型安全。

最后,main() 应该被声明为返回一个int

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-07
    相关资源
    最近更新 更多