求最大输入的字符串,高手进
这个程序是输出第一个最长的单词,编译能通过,结果也没问题,现在要输出全部最长的单词
程序代码:#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;
}
这段代码运行结果正确但是本人不是很懂,请高手解释一下,具体点








