c - 使用 C 程序来计算字符、单词、句子、行或以上所有内容。

标签 c function

我们被要求创建一个程序,提供一个表格,用户可以在其中选择是否对字符、单词、句子、行或以上所有内容进行计数。这需要为每个实用程序提供单独的功能。我的行计数器工作正常,但由于某种原因,字符计数器函数不断返回 0。该程序不完整,但我对字符计数器感到非常沮丧。

#include <stdlib.h>

#define WHT_SPC\
         (cur == ' ' || cur == '\n' || cur == '\t')

int countLines(sp1);
int wordCounter(sp1);
int characterCounter(sp1);
int sentenceCounter (sp1);

int main()
{
    int lineCount = 0;
    int wordCount = 0;
    int characterCount= 0;
    int sentenceCount = 0;
    char filename[100];
    FILE* sp1;


    printf("Enter Filename to be read: ");
    gets(filename);
    sp1 = fopen(filename,"r");


    lineCount = countLines(sp1);
    characterCount = characterCounter(sp1);


    printf("Number of Lines: %d\n",lineCount);
    printf("Number of Characters: %d\n",characterCount);

    fclose(sp1);
    return 0;
}


int countLines(sp1)
{
    int curCh;
    int preCh;
    int countLn = 0;

    while ((curCh = fgetc(sp1)) != EOF)
    {
        if (curCh == '\n')
            countLn++;
        preCh = curCh;
    }
    if (preCh != '\n')
        countLn++;


    return countLn;
}

int characterCounter(sp1)
{
    int chr;
    int countCh = 0;

    while ((chr = fgetc(sp1)) != EOF)
    {
        if (chr != 'n' && chr != ' ')
            countCh++;
    }

    return countCh;
}

我知道缺乏评论并不理想,但我的问题非常具体。不是寻找答案,只是一些建议来为我指明正确的方向。

最佳答案

sp1 是一个结构,其中包含您在正在读取的文件中的位置。在 countLines() 的内部循环之后,该字段将指向文件末尾。在同一流上执行其他读取操作之前,您需要调用 rewind(sp1);,这样它将再次开始工作。 不要犹豫,看看man rewind !

关于c - 使用 C 程序来计算字符、单词、句子、行或以上所有内容。,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53110565/

相关文章:

php - 如何仅将帖子的前 x 个字符显示为预览(PHP)?

javascript - 有没有办法只在事件发生时运行 p5.js?

Python:名称未定义错误,即使函数在调用前已明确定义

php - 创建 MySQL 函数来替换 PHP 代码

c - 如何将 char* 字符串类型中的 "\n"从 ""更改为 0x104567910?

c - 合并多个文件夹中的代码

c - 快速排序逻辑无法正常工作

c - Fortran 变量在与 C 函数链接时被覆盖

javascript - 我可以提醒该值但不能作为函数的值返回

c++ - 停止针对 GLIBC 将 strftime 转换为 __strftime_l 的链接