能帮我看看哪里出错吗?
录入一篇英文文章(存放在字符数组a[n]中),统计单词个数,并按照单词的长度由小到大依次输出各个单词。假定这段文章不超过80个字符,单词不超过20个。#include<stdio.h>
#define N 80
void sort(int b[20][2],int c) //给英文单词长度排序
{
int i,j,k,z;
int t[2];
for(i = 0;i < c-1;i++)
{
k = i;
for(j = i+1;j < c;j++)
{
if(b[k][0] > b[j][0])
k = j;
}
if(k!=i)
{
for(z = 0;z < 2;z++)
{
t[z] = b[i][z];
b[i][z] = b[k][z];
b[k][z] = t[z];
}
}
}
}
int main()
{
int flag = 0,j = 0,z = 0,i = 0,y;
char a[80];
int b[20][2];
printf("请输入英文文章:\n");
gets(a);
while(a[i] != '\0') //
{
if(a[i] >= 'a' && a[i] <= 'z' || a[i] >= 'A' && a[i] <= 'Z')
flag++;
else
{
b[z++][0] = flag; //b[][0]为单词数
flag = 0;
}
if(flag == 1)
{
j++;
b[z++][1] = i; //b[][1]为单词起始位置
}
i++;
}
sort(b,j);
for(y = 0;y < j;y++)
{
for(z = 0;z < b[y][0];z++)
printf("%c",a[b[y][1]+z]);
printf("\n");
}
printf("%d\n",j);
return 0;
}