繁体   English   中英

在C中计算文件中的单词

[英]Counting words in a file in C

我正在编写一个计算文件中单词数量的函数。 单词可以用任何数量的空白字符分隔。 文件中可以有整数,但程序只应计算至少包含一个字母字符的单词。

int word_count(const char *filename)
{
    int ch;
    int state;
    int count = 0;
    FILE *fileHandle;
    if ((fileHandle = fopen(filename, "r")) == NULL){
        return -1;
    }

    state = OUT;
    count = 0;
    while ((ch = fgetc(fileHandle)) != EOF){
        if (isspace(ch))
            state = OUT;
        else if (state == OUT){
            state = IN;
            ++count;
        }
    }

    fclose(fileHandle);

    return count;  

}

我想出了如何处理空格,但我不知道如何计算没有至少一个字母字符的组合(我知道isalpha和isdigit,但我很难理解如何在我的中使用它们案件)。

我将衷心感谢您的帮助。

你可以替换:

else if (state == OUT){

有:

else if (state == OUT && isalpha(ch)){

因此,您在第一个字符处将状态设置为IN并将其计为字。 请注意,你算是last.First一个。 last.First作为一个单词,考虑使用(!isalnum(ch))而不是(isspace(ch))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM