从键盘上输入一串字符串,将其中的单词(单词之间以空格作为分隔符)按长度依次输出。假设每个单词的长度不超过100,单词数目不超过100。
求帮助

程序代码:#include<stdio.h>
#include<string.h>
#include<stdlib.h>
struct Length
{
int num;
int len;
}Length[100];
struct Length Temp;
char *fun(char ss[][100],char *p,int n,int size)
{
memccpy(ss[n],p,' ',size);
while (*p!=' ')
p++;
if (*p=='\0')
return p;
while (*p++==' ');
p--;
return p;
}
void Mystrlen(char ss[][100],int n)
{
Length[n].num=n;
Length[n].len=strlen(ss[n])-1;
}
void change(int n)
{
int i,j;
for (i=0;i<n;i++)
for (j=0;j<n-1-i;j++)
if (Length[j].len<Length[j+1].len)
{
Temp=Length[j];
Length[j]=Length[j+1];
Length[j+1]=Temp;
}
}
void print(char ss[][100],int n)
{
int i=0;
for (i=0;i<n;i++)
printf("%s\n",ss[Length[i].num]);
}
int main()
{
char str[10000];
char ss[100][100];
char *pl=str;
int i=0;
int count=0;
memset(ss,0,sizeof(ss));
gets(str);
while (*pl)
pl=fun(ss,pl,i++,sizeof(str));
while (count<i)
Mystrlen(ss,count++);
if (ss[i-1][strlen(ss[i-1])-1]!=' ')
Length[i-1].len++;
change(i);
print(ss,i);
return 0;
}
