计算文件中单词的次数

Ori*_*ber 0 c string file count

我正在尝试编写一个获取字符串的程序,并计算在特定文件中找到该字符串的次数.

该文件目前是:你好我的名字你好oria我喜欢你好编程

而我所说的这个词是你好.

这是我的代码

int num_of_words(FILE* stream,char* str)
{
    int count=0,i=0,length;
    char c;
    rewind(stream);
    length=strlen(str);
    do
    {
        c=fgetc(stream);
        while(c==*(str+i))
        {
            c=fgetc(stream);
            i++;
            if(i==length)
            {
                count++;
                i=0;
            }
        }
        i=0;
    }while(c!=EOF);
    return count;
}
Run Code Online (Sandbox Code Playgroud)

这个想法是有一个叫做i的索引,只有当字母之间有匹配时它才会前进.如果我达到字符串的长度,那么这意味着我们连续发现了所有字母,并且我将计数提高了一个.

出于某种原因,它总是返回零.

小智 7

while (!eof)错了.

II.不要重新发明轮子-有该strstr()功能在C标准库,帮助你找到另一个字符串的子串.

我宁愿将文件读入缓冲区,然后使用以下函数.如果文件不是太大,这应该不是问题.

int count(const char *haystack, const char *needle)
{
    int n = 0;
    const char *p = haystack;
    size_t len = strlen(needle);
    while (p = strstr(p, needle)) {
        n++;
        p += len;
    }

    return n;
}
Run Code Online (Sandbox Code Playgroud)