C言語統計単語数


1つのプログラムを書いて、1つの単語(大文字と小文字を区別しない)が文章に現れる回数を統計します(単語は1つの英語の単語を指し、すべて小文字の英語のアルファベットで構成されています.単語の前後は記号文字または空の文字でなければなりません).
入力:
最初の行はいくつかの文で、文章を表しています.(文章の長さは10000文字を超えない).
2行目は、クエリの単語数を表すN(1≦N≦1062)の数字です.
以下の行ごとに1つの単語(単語は小文字の英字で構成され、長さは20を超えない).
出力:
各テストデータのセットは、この単語が文章に現れる回数を表す行を出力します.
例入力:
David:hello,lily. Lily:oh,david!hello,how are you?
4
hello
day
ello
david
例出力:
2
0
0
2
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#define MAX_CONTENT 10000
#define MAX_WORD_LEN 20
#define MAX_WORD_COUNT 500

int GetWords(const char* szContent, char (*szWord)[MAX_WORD_LEN])
{
    int num = 0;
    if (szContent == NULL)
    {
        return num;
    }

    char *start = szContent;
    char *cur = NULL;
    while (*start)
    {
        int len = 0;
        cur = start;
        while (((*cur>='a' && *cur<='z') || (*cur>='A' && *cur<='Z')))
        {
            if (*cur>='A' && *cur<='Z')
            {
                *cur += 32;
            }
            cur++;
            len++;
        }

        if (len > 0)
        {
            memset(szWord[num], 0, MAX_WORD_LEN);
            memcpy(szWord[num], start, len);
            num++;
        }

        start += (len+1);
    }
    return num;
}

int GetWordCount(char (*szWord)[MAX_WORD_LEN], int num, char str[])
{
    int i;
    int count = 0;
    if (szWord==NULL || num<=0 || str==NULL)
    {
        return count;
    }

    for (i=0; i<num; i++)
    {
        if (strcmp(szWord[i], str) == 0)
        {
            count++;
        }
    }

    return count;
}
int main()
{
    int i;
    char szContent[MAX_CONTENT] = {0};
    char szWord[MAX_WORD_COUNT][MAX_WORD_LEN];

    printf("please input content:
"); gets(szContent); int totalNum = GetWords(szContent, szWord); printf("please input word count:
"); int inputCount = 0; char szTemp[MAX_WORD_LEN]; scanf("%d", &inputCount); int *pCount = malloc(sizeof(int)*inputCount); for (i=0; i<inputCount; i++) { memset(szTemp, 0, MAX_WORD_LEN); scanf("%s", szTemp); pCount[i] = GetWordCount(szWord, totalNum, szTemp); } printf("-----------------
"); for (i=0; i<inputCount; i++) { printf("%d
", pCount[i]); } free(pCount); return 0; }