#include <stdio.h>
typedef struct
{
int start_index[10]; //标记数字子串的开始下标
int len; //数字子串的长度
}Sub_str_t;
/* 记录数字子串 */
int add_substr(Sub_str_t *sub_str_t, int *index, int num_size, int i)
{
/* 有相同长度时,增加子串下标,长度不变*/
if(num_size == sub_str_t->len)
{
++(*index);
sub_str_t->start_index[*index] = i - num_size;
sub_str_t->len = num_size;
}
else if(num_size > sub_str_t->len)
{/* 有更大长度时,清除之前记录的子串 */
(*index) = 0;
sub_str_t->start_index[*index] = i - num_size;
sub_str_t->len = num_size;
}
return 0;
}
int main()
{
char str[201] = {0};
while(gets(str) != NULL)
{
Sub_str_t sub_str_t;
int len = strlen(str);
int num_size = 0;
int flag = 0;
int index = 0;
memset(&sub_str_t, 0, sizeof(Sub_str_t));
for(int i = 0; i < len; i++)
{
if(str[i] >= '0' && str[i] <= '9')
{
flag = 1;
num_size++;
//末尾仍为数字时,记录此 数字子串
if(i == len - 1)
{
add_substr(&sub_str_t, &index, num_size, i+1);
}
}
else if(flag == 1) //记录子串
{
add_substr(&sub_str_t, &index, num_size, i);
flag = 0;
num_size = 0;
}
}
for(int j = 0; j <= index; j++)
{
for(int i = sub_str_t.start_index[j]; i < sub_str_t.start_index[j] + sub_str_t.len; i++)
{
printf("%c", str[i]);
}
}
printf(",%d\n", sub_str_t.len);
memset(str, 0, sizeof(char) * 201);
}
return 0;
}