/*
* 1、字符串由大小写字母、数字以及空格组成,一个或多个空格将多个字符串隔开
* 2、解析出各字符串
* 3、输出结果时,将得出的个子串按照长度从大到小排序,如果长度一样,按照小写字母>大写字母>数字,进行排序
* 4、输出结果时,一个空格隔离各个子串
* 比如w23r at 1rt Af w13r, 排序后为 w13r 1rt at Af
*/
#include<stdio.h>
#include<string.h>
#define N 1024
/*
* 定义一个结构体,保存解析出来的数据和字符串
*/
struct strNum
{
int num;
char strSub[26];
};
/*
* 功能:解析出子串,并统计子串中字符数的数目
* 保存子串
*/
int getSubstring(char a[], struct strNum Oupstr[], int k)
{
int len, i;
int j = 0; /* j 为结构体里面数组下标的变化量, k 为结构体数组的变化量 */
int spaceNum = 0; /* spaceNum 为隔开字符用的空格数 */
len = strlen(a);
k = 0;
for( i = 0; i < len; i++)
{
if(a[i] != ' ')
{
Oupstr[k].strSub[j] = a[i];
Oupstr[k].num++;
j++;
spaceNum = 0;
}
else if ( a[i] == ' ' && spaceNum == 0)
{
k++;
spaceNum++;
j = 0;
}
}
return k;
}
/*
* 功能:对解析出来的子串进行长度排序
*/
void sortSubstring(struct strNum Oupstr[], int SubNum)
{
int i, j;
struct strNum tmp;
for( i = 0; i <