关于#c语言#的问题:以文献内容和一个单词为参数,统计文献中该单词出现的次数(以参数形式返回给该函数的调用者),并将第一次出现该单词在数组中的位置指针作为返回值

关于#c语言#的问题:以文献内容和一个单词为参数,统计文献中该单词出现的次数(以参数形式返回给该函数的调用者),并将第一次出现该单词在数组中的位置指针作为返回值

问题描述:

c语言
1.文献查找一般是通过关键词进行查找的,英文文献的关键词是出现次数最多的单词。现给定一篇英文文献,用一个字符串数组保存,数组的每个元素存储的是文献中的一句话,书的内容不多于10000句。(单词仅由字母构成)
实现一个函数,以文献内容和一个单词为参数,统计文献中该单词出现的次数(以参数形式返回给该函数的调用者),并将第一次出现该单词在数组中的位置指针作为返回值。
2.在上述实现的函数基础上,找出文献的关键词

参数用指针,找到单词第一个字符出现位置,然后逐个进行比较,全部匹配则计数加1

#include <stdio.h>
char *findwords(char *s,char *w,int *count)
{
    int i=0,j=0,k;
    char *p = NULL;
    while(s[i] != 0)
    {
        j=0;
        k = i;
        while(s[k] != 0 && w[j] != 0 && s[k++] == w[j++]);
        if(w[j] == 0)
        {
             (*count)++;
             if(p == NULL)
                  p = s+i;
             i=k-1;
        }
        i++;
    }
    return p;
}
int main()
{
    char s[10001];
    char w[101];
    char *p = NULL;
    int count  = 0;
    gets(s);
    gets(w);
    p = findwords(s,w,&count);
    printf("%d",count);
    return 0;
}