求最大输入的字符串,高手进
											这个程序是输出第一个最长的单词,编译能通过,结果也没问题,现在要输出全部最长的单词
程序代码:#include <stdio.h>
#include <string.h>
char *fun(char *p);
int alphabet(char c);
char *a[10];
main()
{
    char str[100];
    char *s,*k;
    int c;
    printf("input the string:\n");
    gets(str);
    s=fun(str);
    if(s==NULL)
        printf("the string is null!");
    else
    {
        printf("the longest word is :\n");
        while(*s != '\0')
        {
            k=s;
            while(alphabet(*s))
            {
                printf("%c",*s);
                s++;
            }
            c = strlen(k)-strlen(s);
            printf("  ");
            if(*s != '\0')
            {
                s++;
                s=fun(s);
            }
            if(strlen(s) < c)
                break;
        }
        printf("\n");
    }
}
int alphabet(char c)     //判断输入的字符是不是在范围之内
{
    if((c>='A'&&c<='Z')||(c>='a'&&c<='z'))
        return 1;
    else
        return 0;
}
char *fun(char *p)
{
    int max=0;  //最大的字符串标志
    int count=0;  //计数
    int flag=1;    //结束标志
    char *point=NULL;  
    while(*p!='\0')
    {
        if(alphabet(*p))
        {
            count++;
            flag=0;
        }
        else
            flag=1;
        if(flag)
        {
            if(count>max)
            {
                max=count;
                point=p-max;
                count=0;
            }
            else
                count=0;
        }
        p++;
    }
    if(count > max)
        point = p - count;
    return point;
}
这段代码运行结果正确但是本人不是很懂,请高手解释一下,具体点


											

	    

	