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